a
    kº”hÝN  ã                   @   s2  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 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)Úcopy)Ú	unchanged)ÚInteger)ÚEq)ÚSymbol)ÚS)ÚPermutationÚ
_af_parityÚ_af_rmulÚ	_af_rmulnÚAppliedPermutationÚCycle)ÚsstrÚsreprÚprettyÚlatex)ÚraisesÚwarns_deprecated_sympyÚaT©Úintegerc               	      s6  t tdd„ ƒ tg d¢ƒ‰ ‡ fdd„tˆ jƒD ƒtˆ ƒks>J ‚ˆ ttˆ jƒƒƒtˆ ƒks\J ‚tˆ ddƒƒg d¢ksvJ ‚t t‡ fd	d„ƒ t t‡ fd
d„ƒ tˆ ƒttdƒƒks²J ‚ˆ  ¡ ˆ ksÂJ ‚tˆ ƒˆ ksÒJ ‚tddtdƒksèJ ‚ttdƒddtdƒksJ ‚tddggddtddgdgdggƒks4J ‚t d¡tddgƒtddgƒfv s\J ‚tg d¢ƒ‰ tdgg d¢gƒ} t	ˆ ˆ hƒdksJ ‚tg d¢ƒ}tt
dd„ ˆ | |fD ƒŽ ƒj}tˆ | |ƒj|ksÒJ ‚tˆ | |fƒD ]>\}}}|||fˆ | |fkrqàt|||ƒj|ksàJ ‚qàˆ  ¡ ttdƒƒks:J ‚|  ¡ g d¢ksPJ ‚tˆ jƒjˆ jkshJ ‚ˆ jdksxJ ‚| jdksˆJ ‚| jdks˜J ‚t| ˆ ƒtg d¢ƒks´J ‚tˆ | ƒtg d¢ƒksÐJ ‚tˆ j| jƒg d¢ksìJ ‚ttg d¢ddggƒtg d¢dgdggƒƒjg d¢ddggks0J ‚| jg d¢ksDJ ‚| jg d¢gksZJ ‚| jg d¢dggkstJ ‚ˆ jg d¢g d¢gksJ ‚ˆ  ¡ }|g d¢ksªJ ‚tjd d„ |D ƒŽ sÄJ ‚tddgƒ ¡ d!gksàJ ‚ˆ d" ˆ ksòJ ‚| d ttt| jƒƒƒksJ ‚| d# | d  ks*J ‚| d tg d$¢ƒksDJ ‚| d | d |  ks^J ‚| d | d | d  ks|J ‚tddƒ}tdddƒ}tdƒ}| |d% ks®J ‚||  |ksÂJ ‚||d%  ||  ksÞJ ‚tddddd&ƒddƒ}ˆ |  ¡   ¡ | ¡ ksJ ‚ˆ |  ¡  j| ¡ ks.J ‚| ˆ  ¡   ¡ | ¡ ksLJ ‚t t‡ fd'd„ƒ ˆ |  ¡   ¡ tdd&dddddƒ ¡ ksŒJ ‚ˆ  ¡ |  ¡  dk s¦J ‚| ˆ  ¡   ¡ tddd&dƒddƒ ¡ ksÔJ ‚ˆ |  tt
d(d„ | ˆ fD ƒŽ ƒksüJ ‚ˆ tg ƒ ˆ ksJ ‚tg ƒˆ  ˆ ks(J ‚ˆ tddggƒ tg d)¢ƒksLJ ‚tddggƒˆ  tg d*¢ƒkspJ ‚ˆ | A }|tg d+¢ƒksŽJ ‚|t| ˆ |  ƒks¦J ‚| ˆ A }	|	tg d,¢ƒksÄJ ‚|	tˆ | ˆ  ƒksÜJ ‚t t‡ fd-d„ƒ ˆ  | ¡tddddd&ddƒksJ ‚|  ˆ ¡tdddd&dddƒks6J ‚ˆ  | ¡|  ˆ ¡ ksRJ ‚t t‡ fd.d„ƒ t	ˆ  ¡ ƒdkszJ ‚|  ¡ h d/£ksJ ‚ˆ  ¡ g d0¢ks¦J ‚|  ¡ g d1¢ks¼J ‚t ˆ  ¡ ¡ˆ ksÔJ ‚t |  ¡ ¡j| jksðJ ‚t td2d„ ƒ tttd3d%d%ƒƒƒ ¡ d4ks J ‚tg d5¢ƒ}
|
 ¡ dks>J ‚|
j}t	|
jƒ|
jkrd|
 ¡ dkshJ ‚|
jrtJ ‚|
js€J ‚tg d6¢ƒ ¡ dksšJ ‚t g d5¢ƒdks°J ‚t g d6¢ƒdksÆJ ‚tdgƒ}
|
j!sÜJ ‚tg ƒj"sìJ ‚tg d7¢ƒ}|d j#	sJ ‚tˆ  ˆ ƒj#	sJ ‚ˆ  d" tg d8¢ƒk	s8J ‚ˆ  $¡ d&k	sJJ ‚ˆ  %¡ dk	s\J ‚td&gdgg d9¢gƒ} |  $¡ dk	s„J ‚|  %¡ dk	s–J ‚tg d:¢ƒ‰ tg d;¢ddggƒ} ˆ  &¡ g d<¢k	sÌJ ‚|  &¡ g d¢k	sâJ ‚| &¡ g k	sôJ ‚ˆ  '¡ g d=¢k
s
J ‚|  '¡ g d>¢k
s J ‚t| '¡ ƒj#
s4J ‚ˆ  ¡ dk
sFJ ‚tˆ ƒttˆ  $¡ d ˆ  $¡ d? ƒƒ }t|ƒ ¡ dk
s‚J ‚ˆ  (¡ d%k
s”J ‚|  ¡ d@k
s¦J ‚|  (¡ d%k
s¸J ‚tˆ ˆ  ƒ ¡ dk
sÒJ ‚tˆ ˆ  ƒ (¡ dk
sìJ ‚ˆ  )¡ d&k
sþJ ‚|  )¡ dAksJ ‚ˆ ˆ  )¡  j#s$J ‚ˆ  *¡ d&ks6J ‚|  *¡ dksHJ ‚| *¡ dksZJ ‚ˆ  +¡ ddgdgg dB¢dggks€J ‚|  +¡ dgg dC¢dd&gdggks¦J ‚| +¡ dgdgdgdggksÈJ ‚ˆ  ,¡ dDksÚJ ‚|  ,¡ dDksìJ ‚| ,¡ dksþJ ‚ˆ  -| ¡|  -ˆ ¡ksJ ‚ˆ  .| ¡ˆ  .| ¡ks2J ‚ˆ  /| ¡ˆ  /| ¡ksLJ ‚tg d¢ƒ‰ tg d7¢ƒ} ˆ  -| ¡d&ksxJ ‚ˆ  .| ¡dksŒJ ‚ˆ  /| ¡dDks J ‚tg dE¢ƒ‰ t 0ddd¡} ˆ  .| ¡dksÎJ ‚t t‡ fdFd„ƒ t t‡ fdGd„ƒ t t‡ fdHd„ƒ dId„ tdƒD ƒ}tg d¢ƒ}tdƒD ]¤}t|d dƒD ]Ž}||  1|| ¡t|| || ƒt|| || ƒkks|J ‚||  1|| ¡r<||  || ¡|ks¬J ‚||  || ¡|ks<J ‚q<q*tdƒ}tdd&dƒddƒ}|j2ddiksþJ ‚|j2ddddJœksJ ‚t tdKd„ ƒ t tdLd„ ƒ d S )MNc                   S   s
   t dgƒS )Né   ©r	   © r   r   úY/var/www/auris/lib/python3.9/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>   r   z$test_Permutation.<locals>.<listcomp>r   r   ©r   r   r   r    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    r)   r   ©r   r)   r   é   r    r   r*   )r   r    r)   r.   r   r*   )r   r    r   r   r*   r.   r)   c                 S   s   g | ]
}|j ‘qS r   )Ú
array_form©r"   Úwr   r   r   r&   .   r   é   )r   r   r    r*   r)   r.   i°  )r*   r.   r   r   r)   r    r   )r.   r)   r    r   r   r*   r   )r   r   r    )r   r   r*   )r   r*   r   )r    r   r*   r)   r   r.   r   )r   r   r   r)   )r    r.   r*   ))r   r)   ©r   r   )r   r   )r    r*   )r    r.   c                 S   s   g | ]}t t|Ž ƒ‘qS r   )r	   r   )r"   Ztir   r   r   r&   K   r   r3   é   éþÿÿÿ)r)   r   r   r.   r    r   r*   r(   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   )r7   r0   r   r   r   r&   f   r   )r   r)   r   r.   r    r   r*   )r)   r   r   r.   r    r   r*   )r)   r.   r   r*   r   r   r    )r*   r    r.   r   r   r)   r   c                      s   ˆ t g ƒA S ©Nr   r   r$   r   r   r   r   r   c                      s   ˆ   tg ƒ¡S r9   )Ú
commutatorr	   r   r$   r   r   r   w   r   >   r   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¡S )Nr   r   )r	   Úfrom_inversion_vectorr   r   r   r   r   ‚   r   iô  iBé )r   r*   r   r    r   ©r   r   r*   r    r   ©r    r   r   r   )r)   r   r   r*   r.   r   r    ©r   r   r   r    r*   ©r   r)   r   r   r    r.   r*   ©r   r   r    r)   r.   )r   r    r*   )r   r   r)   )r   r    r)   é‚   é   r6   )r   r    r.   )r   r    r)   é   )r   r    r   r   r*   c                      s   ˆ   tg ƒ¡S r9   )Úget_adjacency_distancer	   r   r$   r   r   r   Ñ   r   c                      s   ˆ   tg ƒ¡S r9   )Úget_positional_distancer	   r   r$   r   r   r   Ò   r   c                      s   ˆ   tg ƒ¡S r9   )Ú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&   Õ   r   )r   r    r   c                   S   s   t dddS )Nr    r+   r   r   r   r   r   r   ä   r   c                   S   s   t g d¢ddS )N©r   r   r   r    r    r+   r   r   r   r   r   r   å   r   )3r   Ú
ValueErrorr	   r8   r,   r7   Ú	TypeErrorr   ÚrandomÚlenr   r/   Úrmulr   ZsupportÚcyclic_formZcardinalityZcyclesr   Zfull_cyclic_formZtranspositionsÚrankZ_rankr:   ZatomsZinversion_vectorr;   Z
inversionsZparityÚ_cyclic_formZis_oddZis_evenr
   Zis_SingletonZis_EmptyÚis_IdentityÚmaxÚminZascentsZdescentsÚ	signatureÚorderÚlengthÚrunsÚindexrF   rD   rE   ÚjosephusZcommutes_withZcycle_structure)ÚqÚrZansr   ÚbÚcÚtÚIZpqZqpÚsÚ_ÚbigZidenr#   Újr   r$   r   Útest_Permutation   sZ   $.(ÿ
ÿþ
 
..($$$$ÿ
"$
&&&""ÿ
$re   c                     sœ   G dd„ dt ƒ‰ ˆ g d¢ƒ} t g d¢ƒ‰| ˆks4J ‚tt‡fdd„ƒ ddg| ddgƒks^J ‚t| ˆ ƒˆ ksrJ ‚tˆ|  ƒt ks†J ‚‡ 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                    s^   zt ƒ j|Ž W S  ty    Y n0 z|d }‡ fdd„|D ƒW S  tyX   tdƒ‚Y n0 d S )Nr   c                    s   g | ]}ˆ j | ‘qS r   )Ú_array_form)r"   rd   ©Úselfr   r   r&   ó   r   zTtest_Permutation_subclassing.<locals>.CustomPermutation.__call__.<locals>.<listcomp>zunrecognized argument)ÚsuperÚ__call__rK   )rh   r#   Zperm_obj©Ú	__class__rg   r   rj   ë   s    z@test_Permutation_subclassing.<locals>.CustomPermutation.__call__c                    s*   t |tƒr|  ¡ | ¡ kS tƒ  |¡S d S r9   )Ú
isinstancer	   Z_hashable_contentri   Ú__eq__)rh   Úotherrk   r   r   rn   ÷   s    
z>test_Permutation_subclassing.<locals>.CustomPermutation.__eq__c                    s
   t ƒ  ¡ S r9   )ri   Ú__hash__rg   rk   r   r   rp   ý   s    z@test_Permutation_subclassing.<locals>.CustomPermutation.__hash__)Ú__name__Ú
__module__Ú__qualname__rj   rn   rp   Ú__classcell__r   r   rk   r   ÚCustomPermutationê   s   ru   ©r   r   r    r   c                      s   ˆ ddgƒS ©Nr   r   r   r   )r[   r   r   r     r   z.test_Permutation_subclassing.<locals>.<lambda>r   r    r   c                      s<   t ƒ d t ƒ d< ˆ t ƒ d< tƒ  t ƒ d t ƒ d< t ƒ d= d S )Nr	   Z__Perm)Úglobalsre   r   )ru   r   r   Úwrapped_test_Permutation  s
    
z>test_Permutation_subclassing.<locals>.wrapped_test_Permutation)r	   r   rK   Útype)r%   ry   r   )ru   r[   r   Útest_Permutation_subclassingè   s    r{   c                   C   s6   t  ddd¡t g d¢ƒksJ ‚t  ddd¡js2J ‚d S )Nr*   r.   r   )r    r   r   r   r)   r*   r)   )r	   rZ   rR   r   r   r   r   Útest_josephus  s    r|   c                  C   sž  t  dd¡ ¡ dksJ ‚t  dd¡} |  ¡ dks4J ‚|  ¡ }| ¡ dksLJ ‚t  dd¡ ¡ dksdJ ‚t  dd¡jsvJ ‚t  dd¡} |  ¡ dks’J ‚| jg d	¢ks¤J ‚|  ¡ d u s´J ‚t g d
¢ƒ} t g d¢ddggƒ}dd„ tdƒD ƒ}|g d¢g d¢g d¢g d¢g d¢gksJ ‚dd„ |D ƒttdƒƒks2J ‚t g d¢ƒ ¡ t g d¢ƒksTJ ‚| 	¡ dksfJ ‚|  	¡ dksxJ ‚t ddgƒ 	¡ dks’J ‚t ttdƒƒƒ}|}g }g }tdƒD ]*}| 
|¡ | 
|¡ | ¡ }| ¡ }q¶||  krúd u s n J ‚dd„ |D ƒdd„ |D ƒks"J ‚t g d¢ƒ} t dgdgg d¢gƒ}|  ¡ dksVJ ‚| ¡ dkshJ ‚t g ƒ ¡ dks~J ‚|  ¡ }|dks”J ‚t  d d¡| ksªJ ‚| ¡ }	|	d!ksÀJ ‚t  d d!¡t |jƒksÜJ ‚d"d„ td#ƒD ƒ}|g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d¢g d*¢g d+¢g d¢g d,¢g d-¢g d.¢g d/¢g d0¢g d1¢g d	¢g d2¢g d¢g d3¢g d4¢g d5¢g d¢g d¢gksŒJ ‚d}
t |d ƒ}td|
d ƒD ]}|t || ƒ }qªt jd6d„ ||
d d7… D ƒŽ }||ksîJ ‚g }t ddgƒ} tdƒD ]4}| 
| j¡ |  ¡ } | d u r| 
d ¡  q<q|ddgddgd gksXJ ‚t g d%¢ƒ ¡ t g d&¢ƒkszJ ‚d8d„ |D ƒttd#ƒƒksšJ ‚d S )9Nr)   r6   é   éá   éâ   r   r*   é   r=   r?   r@   c                 S   s   g | ]}t  d |¡j‘qS rG   )r	   Zunrank_trotterjohnsonr/   r!   r   r   r   r&   *  r   z test_ranking.<locals>.<listcomp>r   ©r   r   r    r   ©r   r    r   r   )r    r   r   r   )r    r   r   r   c                 S   s   g | ]}t |ƒ ¡ ‘qS r   )r	   Úrank_trotterjohnson©r"   Úpar   r   r   r&   -  r   ië  i=  r   r    r.   c                 S   s   h | ]}t |ƒ’qS r   )Útuple)r"   r   r   r   r   Ú	<setcomp>>  r   ztest_ranking.<locals>.<setcomp>r-   r>   i¬  if  i@  r2   é)   c                 S   s   g | ]}t  d |¡j‘qS rG   ©r	   rH   r/   r!   r   r   r   r&   L  r   é   rv   )r    r   r   r   )r   r    r   r   rI   )r   r    r   r   )r   r   r    r   )r   r   r   r    )r   r    r   r   )r   r   r    r   )r   r   r   r    )r   r   r    r   )r   r    r   r   )r    r   r   r   )r   r   r   r    ©r   r   r    r   r'   ©r    r   r   r   )r   r    r   r   c                 S   s   g | ]}t |ƒ‘qS r   r   )r"   Úhr   r   r   r&   X  r   r(   c                 S   s   g | ]}t |ƒ ¡ ‘qS r   )r	   Úrank_nonlexr„   r   r   r   r&   e  r   )r	   Z
unrank_lexrP   Znext_lexrR   r/   r8   r7   Znext_trotterjohnsonrƒ   ÚappendrŽ   rH   Zrmul_with_afZnext_nonlex)r%   Úp1r[   r   r]   ÚlZtjr#   ZprankZqrankÚNÚp2Úokr   r   r   Útest_ranking  sŽ    ÿ 
ÿ


"û


"r•   c                     s4  g d¢g d¢ } ‰ t | ˆ ƒg d¢ks(J ‚t| ˆ ttdƒƒƒg d¢ksHJ ‚tt| ƒtˆ ƒƒjg d¢kshJ ‚tg d¢ƒ} d‰ d‰t | ˆ ˆ¡tg d¢ƒksšJ ‚t | ˆ¡tg d¢ƒks¶J ‚tt‡ ‡fdd	„ƒ d
‰d}‡fdd„t|ƒD ƒ} ttˆƒƒ}t|ƒD ]2}t || | ƒ}t| d |d … Ž }||ksüJ ‚qüd S )Nr'   r   r‹   r*   rŒ   rv   r=   c                      s   t  ˆ ˆ¡S r9   )r	   rN   r   )r]   r^   r   r   r   s  r   ztest_mul.<locals>.<lambda>r.   rC   c                    s   g | ]}t  ˆ |¡j‘qS r   r‰   r!   )Únr   r   r&   w  r   ztest_mul.<locals>.<listcomp>r   )	r   r   r7   r8   rN   r	   r/   r   rK   )r   Úmr   r#   Úh2r   )r]   r^   r–   r   Útest_mulh  s$      r™   c                  C   sl  t ddgƒ} | jd u sJ ‚t | ƒ| ks*J ‚| jg d¢ddggksDJ ‚| jg d¢ksVJ ‚t dƒ} | jd u slJ ‚| jg d¢ks~J ‚t dgƒt dƒks”J ‚t dgdggƒt d	ƒ  krÂt ddgfƒksÈn J ‚t dd
ggƒt g d¢ƒksæJ ‚t dgdd
ggƒt g d¢ƒks
J ‚t dgdd
ggddt g d¢ƒks2J ‚t dgdd
ggddt g d¢ƒksZJ ‚t ddgdd
ggƒt ddd
ƒks€J ‚t g ddt g d¢ƒksžJ ‚t dƒ d¡g d¢ksºJ ‚t dƒ d¡g ksÒJ ‚t dƒdd
ƒ d¡g d¢ksôJ ‚t dƒdd
ƒ ¡ g d¢ksJ ‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t ddƒt g d¢ƒkshJ ‚d S )Nr‚   )r*   r)   r*   r)   )r    r   r   r   r)   r*   r   ©r   r   )rš   )r   r   ©r   r   r   r<   r+   r.   )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 g d¢ƒS )N)r   r   r   r   r   r   r   r   r   š  r   c                   S   s   t ddgddS )Nr*   r)   r6   r+   r   r   r   r   r   r   ›  r   )r   r   r   r    r)   r*   )r	   rQ   rO   rf   r7   r   rJ   r$   r   r   r   Ú	test_args  s>    ÿ$(ÿ
ÿ
&" rž   c                  C   sš  t tƒ ƒdksJ ‚ttddƒƒtddƒks.J ‚tddƒ ¡ tddƒksJJ ‚ttdddƒƒg d¢ksfJ ‚tddƒddƒtdddƒks†J ‚tddƒddƒddƒtdddƒddƒks²J ‚ttddƒddddƒƒjsÜJ tdddƒƒ‚ttd	d
„ ƒ tddƒ ¡ g d¢ksJ ‚tddƒ d¡g d¢ks$J ‚tdƒ d¡ddgks@J ‚tdƒ d¡g d¢ks\J ‚ttddƒddtg d¢ƒks€J ‚t tddƒddƒƒdksžJ ‚t tddƒƒdks¶J ‚ttttdƒƒƒƒtƒ ksÖJ ‚tddƒ ¡ g d¢ksòJ ‚tddƒ d¡g d¢ksJ ‚tƒ j	dks"J ‚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–J ‚d S )Nú()r   r   r    r‚   r*   r)   r   c                   S   s
   t ƒ  ¡ S r9   )r   r7   r   r   r   r   r   ¨  r   ztest_Cycle.<locals>.<lambda>r›   r'   r.   ©r   r   r   r    r*   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 rw   r¢   r   r   r   r   r   ¶  r   c                   S   s   t ddƒi  S rw   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   r   r7   r	   rO   r   rJ   r8   r,   rK   r$   r   r   r   Ú
test_Cycle   s8     ,*
ÿ
 r¦   c                   C   sL   t  d¡t dƒdddƒksJ ‚t jddd„ dt dƒdd	ƒddƒksHJ ‚d S )
NZSymPyr*   r   r   r    c                 S   s   |   ¡ S r9   )Úlower©Úxr   r   r   r   Â  r   z$test_from_sequence.<locals>.<lambda>)Úkeyr   )r	   Zfrom_sequencer   r   r   r   Útest_from_sequenceÀ  s    ÿr«   c                      s´   t dddƒ‰ ˆ  d¡t dddddks*J ‚ˆ  d¡t dddddksHJ ‚ˆ  d¡ˆ ksZJ ‚tt‡ fdd	„ƒ t dddƒddƒdd
ƒ‰ ˆ  d¡t dddƒksžJ ‚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­   r   rJ   r   r   r$   r   Útest_resizeÆ  s    r®   c                  C   sr   t g d¢ƒ} t| ƒdksJ ‚t| ƒdks,J ‚t ƒ }t|ƒdksBJ ‚t|ƒdksRJ ‚t g d¢ƒ}t|ƒdksnJ ‚d S )Nr›   zPermutation(1, 2)r¡   zPermutation()rŸ   rI   zPermutation(3)(0, 1, 2))r	   Úreprr¥   )r   r“   Úp3r   r   r   Útest_printing_cyclicÒ  s    r±   c                  C   sÀ   t g d¢ƒ} t| dddks J ‚t| dddks4J ‚t g d¢ƒ}t|dddksTJ ‚t|dddkshJ ‚t g d¢ƒ}t|dddksˆJ ‚t|dddksœJ ‚t g d	¢ƒ}t|ddd
ks¼J ‚d S )Nr    F)Zperm_cycliczPermutation([], size=6)rœ   zPermutation([0, 1, 2])r›   zPermutation([0, 2, 1]))r   r   r    r   r*   r)   r.   r2   z!Permutation([0, 1, 3, 2], size=8))r	   r   r   )r   r“   r°   Zp4r   r   r   Útest_printing_non_cyclicÝ  s    r²   c                  C   sö  t dddƒ} zÚdt _tƒ   t| ƒdks.J ‚W d   ƒ n1 sB0    Y  tƒ   t| ƒdksdJ ‚W d   ƒ n1 sx0    Y  tƒ   t| ƒdksšJ ‚W d   ƒ n1 s®0    Y  tƒ   t| ƒdksÐJ ‚W d   ƒ n1 sä0    Y  dt _tƒ " t| ƒd	ksJ ‚W d   ƒ n1 s$0    Y  tƒ " t| ƒd	ksHJ ‚W d   ƒ n1 s^0    Y  tƒ & t| dd
dks†J ‚W d   ƒ n1 sœ0    Y  tƒ " t| ƒdksÀJ ‚W d   ƒ n1 sÖ0    Y  W d t _nd t _0 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   r   r   r   r$   r   r   r   Útest_deprecated_print_cyclicì  s.    ....226ÿ,r³   c                  C   s¶   t dddƒ} t dddƒ}t| |ƒtju s,J ‚t dddƒ}t| |ƒtju sLJ ‚t ddddd}tt| |ƒslJ ‚t ddddd}tt| |ƒsŒJ ‚t ƒ }tt|dƒs¢J ‚ttd|ƒs²J ‚d S )Nr   r   r   r*   r+   )r	   r   r   ÚtrueÚfalser   )r   r]   r^   ÚdÚer#   r   r   r   Útest_permutation_equality  s    r¸   c                  C   s@   t ddƒ} t ddƒ}| |ks J ‚t| ƒdks0J ‚| |ks<J ‚d S )Nr   r   zCycle(1, 2))r   r¯   )Zc1Úc2r   r   r   Útest_issue_17661  s
    

rº   c                      s°   t dƒ‰tdddƒ‰ ˆ  d¡dks&J ‚tˆ  d¡tƒs:J ‚ˆ  ˆ¡tˆ ˆƒksRJ ‚tˆ ˆƒ ˆd¡dkslJ ‚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 r9   ©Úapplyr   ©r%   r©   r   r   r   )  r   z(test_permutation_apply.<locals>.<lambda>T)Únegativec                      s
   ˆ   ˆ¡S r9   r»   r   r½   r   r   r   +  r   )	r   r	   r¼   rm   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<J ‚t| dd	djtksTJ ‚d S )
Nr©   r   r   r   c                      s
   t dˆ ƒS )Nrœ   )r   r   r¨   r   r   r   1  r   z)test_AppliedPermutation.<locals>.<lambda>T)ÚevaluateF)r   r	   r   rJ   r   rl   r$   r   r¨   r   Útest_AppliedPermutation.  s    ÿrÃ   N).Ú	itertoolsr   r   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   rN   r   re   r{   r|   r•   r™   rž   r¦   r«   r®   r±   r²   r³   r¸   rº   rÁ   rÃ   r   r   r   r   Ú<module>   s8     V.M! 