o
    *Î®cd`  ã                   @   s¸   d dl mZmZ d dlmZmZmZmZmZm	Z	 d dl
mZmZ d dlmZm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edd„ ƒZdd„ Zdd„ ZdS )é    )ÚPermutationÚPerm)Úperm_af_direct_productÚ	dummy_sgsÚriemann_bsgsÚget_symmetric_group_sgsÚcanonicalizeÚbsgs_direct_product)Úcanonicalize_naiveÚgraph_certificate)ÚskipÚXFAILc                  C   sx   g d¢g d¢g} ddgg}t | |dƒg d¢g d¢g d¢gks J ‚g d¢g d¢g} g d¢g}g d	¢g d
¢g d¢gs:J ‚d S )N©é   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   )Úgens1Úgens2© r   úP/tmp/pip-target-vg8gfxp4/lib/python/sympy/combinatorics/tests/test_tensor_can.pyÚtest_perm_af_direct_product   s   
&
r   c                  C   sÊ   t ddgddƒ} | g d¢gksJ ‚t g d¢ddƒ} | dd	„ td
ƒddƒtd
ƒddƒtd
ƒddƒddƒfD ƒks9J ‚t g d¢ddƒ} | dd	„ tddƒdd
ƒtddƒdd
ƒtd
ƒddƒddƒfD ƒkscJ ‚d S )Nr   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   é   c                 S   ó   g | ]}|j ‘qS r   ©Ú_array_form©Ú.0Úxr   r   r   Ú
<listcomp>   ó    z"test_dummy_sgs.<locals>.<listcomp>é	   r   r   c                 S   r    r   r!   r#   r   r   r   r&      r'   )r   r   )Úar   r   r   Útest_dummy_sgs   s    ÿ$ÿr*   c                   C   s2  t dƒdgtdƒddƒgfksJ ‚t ddƒdgtddƒddƒgfks$J ‚t dƒddgtdƒddƒtdƒddƒgfks<J ‚t ddƒddgtddƒddƒtddƒddƒgfksWJ ‚t dƒg d¢tdƒddƒtdƒddƒtdƒddƒgfksuJ ‚t ddƒg d¢tddƒddƒtddƒddƒtddƒddƒgfks—J ‚d S )Nr   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   Útest_get_symmetric_group_sgs   s   "&06<Hr+   c               	   C   s   t dƒ\} }ddg}tg d¢ƒ}t||d| |ddf| |ddfƒ}|g d¢ks(J ‚t||d| |dd fƒ}|g d¢ks;J ‚t||d| |ddf| |ddfƒ}|g d¢ksSJ ‚tg d¢ƒ}g }| |ddf }}t||d||ƒ}|g d¢kssJ ‚tg d¢ƒ}t||d||ƒ}|g d¢ks‰J ‚t dƒ\}}ddg}tg d¢ƒ}t||d||ddfƒ}|g d	¢ks¬J ‚t||d||ddfƒ}|g d	¢ks¿J ‚tg d
¢ƒ}t||d||ddfƒ}|g d¢ksØJ ‚ddg}tg d¢ƒ}t||d||ddf||ddfƒ}|g d¢ksúJ ‚t||d||ddf||ddfƒ}|g d¢ksJ ‚t dƒ\} }t dƒ\}}tg d¢ƒ}g d¢}||ddf}| |ddf }}	t||d|||	ƒ}|g d	¢ksIJ ‚tg d¢ƒ}g d¢}g tttdƒƒƒgddf}t||d|||	ƒ}|g d¢ksrJ ‚g tttdƒƒƒgddf }}g d¢}tg d¢ƒ}t||d||ƒ}|g d	¢ksœJ ‚tg d¢ƒ}t||d||ƒ}|g d¢ks³J ‚g tttdƒƒƒgddf } }}	g d¢}tg d¢ƒ}t||d|||	ƒ}|g d¢ksàJ ‚||ddf}g tttdƒƒƒgddf }}	g d¢}tg d¢ƒ}t||d|||	ƒ}|g d¢ksJ ‚||ddf }}	g tttdƒƒƒgddf}g d¢}tg d¢ƒ}t||d|||	ƒ}|g d¢ksBJ ‚||ddf}g tttdƒƒƒgddf}t ddƒ\}
}|
|ddf}	g d¢}tg d¢ƒ}t||d|||	ƒ}|g d¢ks~J ‚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   ©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   r   r   r   r   r   )r   r   r   r   r   r   r   r   ©r   r   r   ÚlistÚrange)Úbase1r   ÚdummiesÚgÚcanÚt0Út1Úbase2r   Út2Úbase2aÚgens2ar   r   r   Útest_canonicalize_no_slot_sym#   sž       "r?   c                  C   s(  t dƒ\} }t dƒ\}}t ddƒ\}}tg d¢ƒ}t|g d| |ddfƒ}|ttdƒƒks.J ‚tg d¢ƒ}t|g d| |ddfƒ}|g d¢ksGJ ‚tg d¢ƒ}t|g d||ddfƒ}|g d	¢ks`J ‚tg d¢ƒ}t|g d||ddfƒ}|g d
¢ksyJ ‚tg d¢ƒ}t|g d||ddfƒ}|g d	¢ks’J ‚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   r2   )r5   r   r;   r   r=   r>   r7   r8   r   r   r   Útest_canonicalize_no_dummies¬   s$   r@   c               	   C   s$  t g d¢ƒ} t| ttdƒƒd g t ttdƒƒƒgddgƒ}|g d¢ks$J ‚t g d¢ƒ} t| ttdƒƒd g t ttdƒƒƒgddgƒ}|g d¢ksHJ ‚t g d	¢ƒ} t| ttdƒƒd g t ttdƒƒƒgddgƒ}|g d
¢kslJ ‚t g d¢ƒ} t| ttdƒƒd g t ttdƒƒƒgddgƒ}|g d¢ksJ ‚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   r   r   r   r   r(   )é   r   é
   r   é   é   r   é   r   r   r   r(   r   é   r   r   é   é   rG   )r   r   r   r   r   r   r   r   r   rE   rB   rD   rA   rF   rC   r(   rG   rH   )r   r   r3   r4   )r7   r8   r   r   r   Útest_no_metric_symmetryÒ   s   ,,,,rI   c                  C   sH   t g d¢ƒ} ddgg}t| |d gg t dƒgddfƒ}|g d¢ks"J ‚d S )Nr1   r   r   r   )r   r   r   r   r   r   )r   r   )r7   r6   r8   r   r   r   Útest_canonical_freeò   s   
rJ   c               	   C   s>  t dƒ\} }t ddƒ\}}t dƒ\}}t dƒ\}}t ddƒ\}}	t ddƒ\}
}tg d¢ƒ}t|ddgd| |ddfƒ}|ttdƒƒksDJ ‚tg d¢ƒ}t|ttdƒƒd| |ddfƒ}|ttd	ƒƒkscJ ‚tg d¢ƒ}t|ttdƒƒd| |ddfƒ}|dks~J ‚t|ttdƒƒd| |ddfƒ}|dks“J ‚tg d
¢ƒ}t|ttddƒƒd||ddfƒ}|g d¢ks±J ‚tg d¢ƒ}t|ttddƒƒd||ddf||ddfƒ}|g d¢ksÔJ ‚tg d¢ƒ}t|ttddƒƒd||ddfƒ}|g d¢ksòJ ‚tg d¢ƒ}t|ttddƒƒd||ddfƒ}|g d¢ksJ ‚tg d¢ƒ}t|ttd	ƒƒd||ddf||	ddfƒ}|dks2J ‚t|ttd	ƒƒd||ddf||	ddfƒ}|g d¢ksOJ ‚t|ttd	ƒƒd||ddf||	ddfƒ}|g d¢kslJ ‚t|ttd	ƒƒd ||ddf||	ddfƒ}|g d¢ks‰J ‚tg d¢ƒ}||	dd f}| |dd f}|
|dd f}t|ttddƒƒd|||ƒ}|g d¢ks¸J ‚||	dd f}tg d¢ƒ}t|ttdd	ƒƒd|||ƒ}|g d¢ksÛJ ‚tg d¢ƒ}t| |||	ƒ\}}t| || |ƒ\}}||ddf}||ddf}t|ttdƒƒttddƒƒgddg||ƒ}|g d¢ksJ ‚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   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )rB   r   r   r   r   r(   r   rE   r   r   r   r   rA   rD   rA   )r   r   r   r   r   r   r   r   rB   r   r(   rE   rA   rD   )
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   r   r   r   )
r   r   r   r   r   r   r   r   r   r(   )
r   r   r   r   r   r   r   r   r   r(   )r   rE   r   r(   rD   r   r   rB   r   r   r   rA   r   r   rC   rF   rC   )r   r   r   r   rB   rA   r   r   r   rE   r   r(   r   rD   rF   rC   )r   r   r   r3   r4   r
   r	   )r5   r   Úbase1aÚgens1ar;   r   Úbase3Úgens3r=   r>   Úbase3aÚgens3ar7   r8   Úcan1r9   r:   r<   Úbase_fÚgens_fÚbase_AÚgens_Ar   r   r   Útest_canonicalize1ü   sn    * 	 
((((	*rV   c               	   C   sL  t \} }tg d¢ƒ}t|ttddƒƒd| |ddfƒ}|g d¢ks"J ‚t|ttddƒƒdddgtg d¢ƒtg d¢ƒgddfƒ}|g d¢ksFJ ‚	 tg d	¢ƒ}t|ttd
ƒƒd| |ddfƒ}|g d¢ksdJ ‚t|ttd
ƒƒdddgtg d¢ƒtg d¢ƒgddfƒ}|g d¢ks‡J ‚tg d¢ƒ}t|ttdƒƒd| |ddfƒ}|g d¢ks¤J ‚d S )Nr0   r   r   r   r   r.   r   )r   r   r   r   r   r   )é   r   r   rB   rA   r   r   rE   rF   r   rH   é   é   r   rD   r(   r   rC   é   r   rG   é   r   é   é   é   r]   r   )r   r   r   r   r   r   r   rB   r   r   rA   rC   r(   rE   rG   r[   rD   rF   r\   rZ   rH   rX   rY   rW   r]   r^   )*r   r   r   r   r   r   r(   rE   r   rB   rD   rF   rA   rC   rH   rX   rG   r[   rY   rW   r\   rZ   r^   é   r]   é   é   é   é   é   é!   é#   é    é"   é%   é'   é$   é&   r   r   é(   é)   rm   rB   )*r   r   r   r   r   r   r   rB   r   r   rA   rC   r(   rE   rG   r[   rD   rF   r\   rZ   rH   rX   r]   r`   rY   rW   rc   rd   r^   r_   rg   rh   ra   rb   rk   rl   re   rf   ri   rj   rm   rn   )r   r   r   r3   r4   ©ÚbaserÚgensrr7   r8   r   r   r   Útest_riemann_invariants†  s    86rr   c                  C   sˆ   t dƒ t\} }tg d¢ƒ}t|ttdƒƒd| |ddfƒ}|g d¢ks%J ‚tg d¢ƒ}t|ttdƒƒd| |d	dfƒ}|g d
¢ksBJ ‚d S )Nztakes too much time)2rH   é,   rE   r   r   rX   rW   rF   rl   r   r^   r_   é+   rk   rZ   rC   r   rd   rn   r\   r   rB   rA   rc   r[   r   ra   rD   ri   é*   re   r   r(   rb   r]   r`   rj   r   rh   é/   rg   r   rY   rm   rf   é.   é-   rG   é0   é1   ry   r   rA   )2r   r   r   r   r   r   r   rB   r   r   rA   rC   r(   rE   rG   r[   rD   rF   r\   rZ   rH   rX   r]   r`   rY   rW   rc   rd   r^   r_   rg   rh   ra   rb   rk   rl   re   rf   rm   ru   ri   rj   rs   rw   rn   rt   rx   rv   ry   rz   )Rr   r   r   r   r   r   rB   rA   rC   rG   r[   r\   rX   rZ   r]   r`   r   rY   rc   rd   rg   rh   rk   rl   rm   ru   rs   rw   rD   ry   é2   é4   rF   rz   é6   é8   rH   re   rn   é:   r(   rW   é<   é>   ra   rf   é?   é@   r   rx   éB   éD   r^   ri   rv   é9   rE   rb   éE   éF   r_   rj   é5   éH   r   é;   éI   éJ   é7   é=   éC   éL   rt   éA   éK   éN   é3   éG   éM   éO   éP   éQ   r™   r\   )Rr   r   r   r   r   r   rB   rA   r   rC   rG   r[   r   r\   rZ   r]   r   r`   rc   rd   r(   rF   rg   rh   rE   rk   rW   rl   rD   rm   ru   rs   rH   rj   ra   rw   rX   ry   rt   r{   rY   rx   r|   r}   r^   r~   re   r   r_   r€   r‰   r   rb   r•   rƒ   r„   rf   r’   rv   r…   ri   rˆ   rz   rŠ   rn   r   r†   r‘   rŽ   r   r‹   r”   r   r‡   r–   r“   r‚   r˜   rŒ   r—   r™   rš   )r   r   r   r   r3   r4   ro   r   r   r   Útest_riemann_invariants1¬  s   r›   c               	   C   s°  t \} }tdƒ\}}tdƒ\}}tddƒ\}}tg d¢ƒ}t|ttddƒƒd| |ddfƒ}	|	dks3J ‚tg d¢ƒ}t|ttddƒƒd| |ddfƒ}	|	g d¢ksQJ ‚tg d¢ƒ}t|ttdd	ƒƒd| |ddfƒ}	|	g d
¢ksoJ ‚t|ttdd	ƒƒd| |ddfƒ}
|	|
ks…J ‚tg d¢ƒ}t|ttdƒƒd| |ddf||ddfƒ}	|	g d¢ks§J ‚tg d¢ƒ}t|ttddƒƒd| |ddfƒ}	|	g d¢ksÅJ ‚t||||ƒ\}}ttddƒƒ}tg d¢ƒ}t||d||ddfƒ}	|	g d¢ksîJ ‚t||||ƒ\}}ttddƒƒ}tg d¢ƒ}t||d||ddfƒ}	|	g d¢ksJ ‚ttddƒƒttddƒƒg}ddg}t|||||ddfƒ}	|	g d¢ks>J ‚ddg}t|||||ddfƒ}	|	g d¢ksVJ ‚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   )rA   rB   r   r   r   r   r   r   rD   r   r   r   r(   rE   rC   rF   rC   r   )r   r   r   r   r   r   rB   rA   r   r(   r   rE   r   rD   rF   rC   )rB   r   r   r   r   rE   r   r   r   r   r   r(   rA   rD   r   rA   )r   r   r   r   r   r   r   rB   r   r   r(   rE   rA   rD   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   rB   r   rE   r   r   r(   r   r   r   r   rA   rD   )r   r   r   r   r   r   rB   r   r   rE   r   r(   rA   rD   )r   r   r   r   r   rB   r   r   r(   r   r   rE   rA   rD   )r   r   r   r   r   rB   r   r   r(   r   r   rE   rD   rA   )r   r   r   r   r3   r4   r
   r	   )rp   rq   r5   r   r;   r   r=   r>   r7   r8   rQ   ÚbaseÚgensr6   Úsymr   r   r   Útest_riemann_products¹  sL       ( 	rŸ   c                     s~  dd l ‰‡ ‡fdd„} g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢dœ‰ g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢dœ}tˆ ƒ}t|ƒ}||ksOJ ‚| dˆ ƒ}t|ƒ}||ks^J ‚g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢dœ
‰ g d¢g d¢g d ¢g d!¢g d"¢g d#¢g d$¢g d%¢g d&¢g d'¢dœ
}tˆ ƒ}t|ƒ}||ks®J ‚| d(ˆ ƒ}t|ƒ}||ks½J ‚d S ))Nr   c                    sJ   t t| ƒƒ‰ ˆ ˆ ¡ i }ˆ ¡ D ]\}}‡ fdd„|D ƒ|ˆ | < q|S )Nc                    s   g | ]}ˆ | ‘qS r   r   )r$   Úi©Úpr   r   r&     s    zCtest_graph_certificate.<locals>.randomize_graph.<locals>.<listcomp>)r3   r4   ÚshuffleÚitems)Úsizer7   Úg1aÚkÚv©Úg1Úrandomr¡   r   Úrandomize_graph  s   
z/test_graph_certificate.<locals>.randomize_graph)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   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   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   rB   )r«   r   )r¬   Úg2Úc1Úc2r¦   Úc1ar   r©   r   Útest_graph_certificate  s$   66
BB
r±   N)Ú sympy.combinatorics.permutationsr   r   Úsympy.combinatorics.tensor_canr   r   r   r   r   r	   Úsympy.combinatorics.testutilr
   r   Úsympy.testing.pytestr   r   r   r*   r+   r?   r@   rI   rJ   rV   rr   r›   rŸ   r±   r   r   r   r   Ú<module>   s&     	 
& 
 &
Z