
    Qi:o                     t    d dl mZ d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
 	 d Ze
d             Zd Zd	 Zd
S )    )FpGroup)
CosetTablecoset_enumeration_rcoset_enumeration_c)modified_coset_enumeration_r)
free_group)slowc                     t          d          \  } }}t          | |dz  |dz  |dz  |dz  z  |z  |z  g          }t          ||g          }|                    d|           |j        g dgk    sJ |j        dgk    sJ |j        dk    sJ |j        dgk    sJ |                    d|dz             |j        g dgk    sJ |j        dgk    sJ |j        dk    sJ |j        dgk    sJ |                    d|dz             |j        g dg dg d	gk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d|dz  |dz  z  |z  |z             |j        g dg dg dgk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d|dz             |j        g dg dg dg dg dgk    sJ |j        g dk    sJ |j        dk    sJ |j        g dk    sJ |                    d|dz             |j        g dg dg dg dg dgk    sJ |j        g dk    sJ |j        dk    sJ |j        g dk    sJ |                    d|dz  |dz  z  |z  |z             |j        g dg dg dg dg dgk    sJ |j        g dk    sJ |j        dk    sJ |j        g d
k    sJ t          | |dz  |dz  ||z  dz  g          }t          |||z  g          }|                    d||z             |j        g dg dgk    sJ |j        ddgk    sJ |j        dk    sJ |j        ddgk    sJ |                    d|dz             |j        g dg dgk    sJ |j        ddgk    sJ |j        dk    sJ |j        ddgk    sJ |                    d|dz             |j        g dg dg dgk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d||z  dz             |j        g dg dg dgk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d|dz             |j        g dg dg dgk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d|dz             |j        g dg dg dgk    sJ |j        g d
k    sJ |j        dk    sJ |j        g d
k    sJ |                    d||z  dz             |j        g dg dg dg dg dgk    sJ |j        g dk    sJ |j        dk    sJ |j        g dk    sJ |                    d|dz             |j        g dg dg dg d g dgk    sJ |j        g d!k    sJ |j        d"k    sJ |j        g d#k    sJ d S )$Nx, y   r   )r   r   NN   r   r   r      )NNr   r   )NNr   r   )r   r   r   r   r   r   r   )r      r   r   )r   r   NN)r   r   NN)r   r   r   r   r      r   r   r   r   Nr   NN)r   r   r   r   r   r   )r   NNr   )Nr   r   N)r   r   Nr   )r   r   r   N)r   r   r   r   )r   r   r   r   )NNr   r   )r   r   r   r   )Nr   r   N)r   NNr   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   scan_and_filltablepnomega)Fxyfcs        /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/combinatorics/tests/test_coset_table.pytest_scan_1r!      sF     GAq!AqD!Q$2aeAa011A1qcAOOAq7)))*****31#::::3!88887qc>>>>OOAq!t7)))*****31#::::3!88887qc>>>>OOAq!t7|||%7%7%79K9K9KLLLLL3)))3!88887iiiOOAq"uQU{1}Q'''7|||%7%7%7FFFFF3)))3!88887iiiOOAq!t7|||\\\<<< 2 2 24 4 4 4 43///!!!!3!88887ooo%%%%OOAq!t7|||\\\<<< 2 2 24 4 4 4 43///!!!!3!88887ooo%%%%OOAq"uQU{1}Q'''7|||\\\<<<!!!#5#5#57 7 7 7 73///!!!!3!88887iii 	AqD!Q$1q)**A1qseAOOAqs7)))+=+=+=>>>>>31a&====3!88887q!fOOAq!t78888831a&====3!88887q!fOOAq!t7|||\\\3E3E3EFFFFF3)))3!88887iiiOOA!ax   7|||\\\3E3E3EFFFFF3)))3!88887iiiOOAq!t7|||\\\3E3E3EFFFFF3)))3!88887iiiOOAq!t7|||\\\3E3E3EFFFFF3)))3!88887iiiOOA!ax   7|||\\\<<<ASASASUgUgUghhhhh3///!!!!3!88887ooo%%%%OOAq!t7|||\\\<<<OaOaOabbbbb3///!!!!3!88887lll""""""    c                     t          d          \  } }}t          | |dz  |dz  |dz  |dz  z  |z  |z  g          }t          ||g          }|                                 |                                 t          ||g          }|                                 |                                 g dg dg dg}|j        |k    sJ |j        |k    sJ t          d          \  } }}}	t          | |	dz  |z  |	z  |dz  z  |dz  |z  |z  |dz  z  |dz  |	z  |z  |	dz  z  g          }
t          |
g           }|                                 t          |
g           }|                                 g d	g}|j        |k    sJ |j        |k    sJ t          d
          \  } }}t          | |dz  |dz  ||z  dz  |dz  |dz  z  dz  |dz  |dz  z  dz  g          }t          ||g          }|                                 |                                 t          ||g          }|                                 |                                 g 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 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 d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dhg dig djg dkg dlg dmg dng dog dpg dqg drg dsg dtg dug dvg dwg dxg dyg dz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 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 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 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 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 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 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 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 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 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 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 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 d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg ddg deg dfg dgg dhg dig djg dkg dlg dmg dng dog dpg dqg drg dsg dtg dug dvg dwg dxg dyg dz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 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 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 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 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 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 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 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 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 }|j        |k    sJ |j        |k    sJ t          d
          \  } }}t          | |dz  |dz  ||z  dz  |dz  |z  dz  |dz  |z  dz  ||dz  z  dz  |dz  |dz  z  dz  |dz  |z  |z  |z  dz  ||dz  z  |z  |z  dz  g	          }t          ||g          }t          ||g          }d}t          t          |j	                            D ]}|j	        |         |k    r|dz  }|dk    sJ d}t          t          |j	                            D ]}|j	        |         |k    r|dz  }|dk    sJ t          | |dz  |dz  z  |z  |z  |dz  z  |z  |z  |dz  z  |dz  |dz  z  |z  |z  |dz  z  |z  |z  |dz  z  g          }t          ||g          }|                                 |                                 t          ||g          }|                                 |                                 g dg}|j        |k    sJ |j        |k    sJ d S (  Nr   r   r   r   r   r   zr, s, t)r   r   r   r   r   r   za, b   r   r   )r   r   r   r   )r   r   r   r%   )r         	   )r(   
      r   )   r   r(      )   r(   r   r*   )r   r+         )r/         r   )r%   r   r   r   )r            )r4      r%   r   )r&   r         )   r6   r   r1   )r2   r%   r5      )r7         r&   )   r'   r&      )r'          !   )r@   "   r,   r'   )r)   r-   #   rB   )rB   $   %   r)   )r=   r*   r)   r<   )r*   &   '   r-   )r,   rF   rE   r+   )(   r.   r+   )   )*   r,   rA   +   ),   rB   r-   -   )r.   .   /   rA   )rA   0   1   r.   )2   r/   r4   3   )4   r4   r/   rP   )r0   rQ   5   6   )rU   7   8   r0   )rH   r1   r0   rG   )r1   r;   r:   r8   )r9   r3   r2   r2   )r3   9   :   ;   )rZ   <   rR   r3   )r5   rS   =   r6   )r6   >   ?   r5   )@   r7   r@   A   )rO   r@   r7   r\   )r]   r8   rU   B   )C   rU   r8   D   )rX   r9   rZ   E   )F   rZ   r9   r^   )r:   r_   G   H   )rg   I   rc   r:   )r;   rH   J   K   )rj   L   r=   r;   )r>   r<   M   N   )O   rl   r<   rD   )rE   r=   rk   P   )rm   Q   R   r>   )rJ   r?   r>   rI   )r?   S   T   U   )rt   V   r`   r?   )rC   rK   W   X   )rw   Y   Z   rC   )rL   rD   rC   rK   )rD   rq   rp   rn   )ro   ri   rH   rE   )rF   rI   [   \   )r{   ]   rL   rF   )rM   rG   ^   _   )`   r}   rG   rW   )a   rz   rI   rq   )rr   rJ   b   c   )d   r   rJ   rN   )e   rv   rK   ry   )rq   rL   r|   r   )r~   f   g   rM   )h   rN   rM   i   )rN   j   k   r   )r\   l   m   rO   )r   rP   rO   r   )rP   n   o   rS   )rR   r   r   rQ   )p   rT   rQ   q   )r   rR   r[   s   )t   r\   rS   u   )rT   v   w   r[   )r[   re   ra   rT   )rV   rb   x   y   )r   z   {   rV   )r   rW   rV   r   )rW   r   r   r   )rd   |   }   rX   )r   rY   rX   r   )rY   ~         )r   r   rd   rY   )ra         r]   )r   r^   r]   r   )r^   r   r   re   )r`   r   r   r_   )   rf   r_      )   r`   ru      )   ra   re      )rc   r   r   rb   )   r   rb      )r   rc   rh   r   )   rd   r      )rf         ru   )ru         rf   )   rg   rj      )   rj   rg   r   )rh   r      r   )r         rh   )ri         r}   )r}      r   ri   )rk   r      rl   )rl         rk   )   rm   rt      )r   rt   rm   r   )r   rn   rw      )   rw   rn      )r   ro   r{      )   r{   ro   r   )rp   r         )r      r   rp   )r   r   r   rr   )r   rs   rr   r   )rs            )r      r   rs   )rv         r|   )r|   r   r   rv   )rx   r         )r         rx   )ry   ry   rx   r   )rz         r   )r      r   rz   )   r~   r      )r   r   r~   r   )r   r   r   r   )   r   r      )r   r   r      )   r   r   r   )   r   r      )   r   r   r   )r   r   r      )   r   r   r   )r   r         )r      r   r   )r   r         )r      r   r   )r   r         )   r   r   r   )r   r   r      )r      r   r   )r   r         )r      r   r   )r   r         )r      r   r   )r   r   r   r   )r   r   r   r   )r   r         )r      r   r   )r   r         )   r   r   r   )   r   r   r   )r   r         )   r   r   r   )   r   r   r   )r   r   r   r   )r         r   )r   r   r   r   )r         r   )r   r         )r         r   )r   r   r   r   )r   r   r   r   )r   r         )r     r   r   )r   r   r   r   )r   r   r   r   )r            )r     r   r   )r   r         )r
     r   r   )r   r   r   r   )r   r         )   r  r   r   )r   r         )   r  r   r   )   r	  r   r   )r   r   r     )r   r         )   r  r   r  )r   r   r  r  )r  r  r   r   )r  r   r     )r        r   )   r   r      )r         r  )r         r   )r  r   r   r  )r       r   )r   r!  r   r   )  r   r     )  r   r     )  r   r     )r   	  
  r   )r      r   )r#  r   r   r"  )r   r  r  r  )r       r   )r%  r   r   r$  )r       r   )r       r   )r'  r   r   r&  )r   r-  r,  r   )r   r  r  r   )  r   r     )  r   r     )  r   r     )r   r1  r0  r   )  r   r     )r3  r   r   r2  )  r   r     )r       r   )r   r   r   r   )r   r   r   r   )r        r   )r  r  r  r   )r5  r   r   r4  )r   !  "  #  )rB  $  r   r   )r   %  &  r   )r7  r   r   r6  )r   '  (  r   )r   r   )  rH  )rH  *  +  r   )r9  r   r   r8  )r   rE  rD  r   )r   rG  rF  r   )r;  r   r   r:  )r   ,  -  r   )r   r/  r.  r   ).  r   r   /  )0  r   r   1  )r   r)  r(  r   )2  r   r   3  )rN  r   r   rM  )4  r   r   5  )6  r   r   7  )r   rL  rK  r   )rP  r   r   rO  )8  r   rC  9  ):  rH  r   ;  )r   <  =  r   )r   >  ?  r   )@  r   r   A  )B  r   r   r^  )r   r_  C  r   )r   D  E  r   )r   F  G  r   )r   H  r`  r   )r   ra  I  r   )r   J  K  r   )L  r   r   M  )r]  r   r   rh  )ri  r   r   N  )O  r   r   P  )re  r   r   Q  )R  r   r   rj  )r   rk  S  r  )r  T  ro  r   )r   U  V  rC  )rC  W  rl  r   )r   X  Y  r   )r   rq  rm  r   )r   rn  Z  r  )r  [  \  r   )r   ]  ^  r   )r   _  rp  r   )`  r   r   a  )r~  r   r   rf  )rg  r   r   rb  )b  r   r   c  )r|  r   r  d  )e  r  r   rx  )f  r   r  g  )h  r  r   r}  )rw  r   r
  i  )j  r
  r   r{  )r   r  k  l  )r  m  r  r   )r   r  n  o  )r  p  r  r   )r   r  q  r  )r  s  t  r   )rR  r  r   rQ  )r  r+  r*  r  )r  u  v  r  )r  r  r  r  )r  r  r  r	  )r	  w  x  r  )r  r  r  r  )r  y  z  {  )r  |  r  r  )r  r  }  r  )r  ~    r  )  r  r    )rs  r  r  ry  )rz  r  r  r  )  r  r    )  r  rB    )rv  rB  r  rr  )r  r  r    )  r  r  r  )r  r  r    )  r  r  r  )r  r  r    )  r  r    )r  r  r    )  r  r  r  )r  r      )r    r  r  )r  r#      )r    r  r  )r  r      )  r  r  r  )r   r  r    )r    r4  r  )r  r      )r    r  r  )r  r&      )r    r3  r  )r  r4  r  r  )r  r  r#  r   )r!  r$      )r    r'  r!  )r(  r"      )  r  r"  r+  )  r  r$  r-  )r.  r%      )  r  r%  r)  )  r  r&  r1  )r-  r'  r  r  )r    rR  r(  )r)  rN    r  )r*  r      )r    r  r*  )r+  rR  r  r  )r,  r:      )r    r7  r,  )r  r  rN  r.  )r/  rO      )r    r;  r/  )r0  r6      )r    r9  r0  )r1  r3  r  r  )r<  r2      )  r  r2  r?  )r@  r5      )  r  r5  r=  )  r  r6  rE  )rF  r7  r    )r>  r8      )  r  r8  rJ  )rE  r9  r  r  )r  r  r:  rF  )rK  r;  r    )r      r<  )rT  r=  r<  rS  )r=      r  )r      r>  )rV  r?  r>  rU  )r?  r  r  r  )r  r  r  r@  )rX  rA  r@  rW  )rA        )r    r  rA  )rD  rU      )r    rZ  rD  )rG  rS      )r    rV  rG  )rI  rY      )r      rI  )rZ  rJ  rI  rY  )rJ  r  r  r  )r  r  rO  rK  )rL  rW      )r    rT  rL  )r[  rM      )  r  rM  rd  )rt  rP      )  r  rP  r\  )rc  rQ      )  r  rQ  r  )  r  rS  r  )r  rT  r    )  r  rU  r  )r  rV  r  r  )r  r  rW  r  )r  rX      )  r  rX  ru  )  r  rY  r  )r  rZ  r  r  )r    r  r[  )r  r\  r[  r  )r\  r    r   )rh  r  r  r]  )r  r^  r]  r  )r^  r  r  ra  )r`  r  r  r_  )r  rb  r_  r  )r  r`  rg  r  )r  rh  ra  r  )rb  r  r  rg  )r    r  rc  )r  rd  rc  r  )rd  r  r  r  )rp  r  r  re  )r  rf  re  r  )rf  r  r  r~  )rm  r  r  ri  )r  rj  ri  r  )rj  r  r  rq  )rl  r  r  rk  )r  rr  rk  r  )r  rl  rv  r  )r  rm  rq  r  )ro  r  r  rn  )r  ry  rn  r  )r  ro  rs  r  )r  rp  r~  r  )rr  r  r  rv  )ry  r  r  rs  )r  r  r  rt  )r  ru  rt  r  )ru  r
    r	  )r  r  r  rw  )r  rx  rw  r  )rx  r  r  r  )r  r  r  rz  )r  r{  rz  r  )r{  r  r  r  )r  r  r  r|  )r  r}  r|  r  )r}  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r   r  r  )r  r  r  r  )r  r  r  r  )r  r	  r  r  )r  r  r  r  )r  r  r  r  )r  r      )r    r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r    )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r   r  )r  r  r  r  )r  r  r	  r  )r  r  r  r  )r  r  r
  r  )r  r  r  r  )r  r  r  r  )r  r  r  r
  r   r   r   i   )r   r   r   r   )
r   r   r   compressstandardizer   r   rangelenr   )r   r   r   r   C_rC_ctable1rstE1table2abCoxtable3B_2_4index_riindex_cMtable4s                         r    test_coset_enumerationr)  ~   s)      GAq!AqD!Q$2aeAa011A
a!
%
%CLLNNNCOO%%%
a!
%
%CLLNNNCOO%%%llLLL,,,7F99 I&&JAq!Q	QU1WQYq"u_aeAgai2oq"uQwqyBG	H	HB
b"
%
%CLLNNN
b"
%
%CLLNNN   !F99   GAq!
!adAqD1Q3(QT!Q$YNQT!Q$YNK
L
LC
cA3
'
'CLLNNNCOO%%%
cA3
'
'CLLNNNCOO%%%s#lll s#\\s#\\s# \\s# ^^	s#
 ^^s# ^^s# __s# __s# \\s# __s# ^^s# ^^s# __s# __s# __s#  ^^!s#" __#s#$ __%s#& 's#( )s#* +s#, -s#. /s#0 1s#2 3s#4 5s#6 7s#8 9s#: ;s#< =s#> ?s#@ As#B Cs#D Es#F Gs#H Is#J Ks#L Ms#N Os#P Qs#R Ss#T Us#V Ws#X Ys#Z [s#\ ]s#^ _s#` as#b cs#d es#f gs#h is#j ks#l ms#n os#p qs#r ss#t us#v ws#x ys#z {s#| }s#~ s#@ As#B Cs#D Es#F Gs#H Is#J Ks#L Ms#N  Os#P  Qs#R !  Ss#T  Us#V  Ws#X  Ys#Z  [s#\  ]s#^  _s#`  as#b  cs#d es#f  gs#h !  is#j  ks#l  ms#n  os#p  qs#r !  ss#t  us#v  ws#x  ys#z  {s#|  }s#~  s#@  As#B  Cs#D  Es#F !  Gs#H  Is#J !  Ks#L  Ms#N  Os#P  Qs#R  Ss#T !  Us#V !  Ws#X  Ys#Z  [s#\  ]s#^  _s#`  as#b  cs#d  es#f  gs#h  is#j  ks#l !  ms#n !  os#p  qs#r  ss#t !  us#v !  ws#x  ys#z  {s#| !  }s#~ !  s#@ As#B  Cs#D  Es#F !  Gs#H !  Is#J !  Ks#L !  Ms#N !  Os#P !  Qs#R !  Ss#T !  Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@	 "!!A	s#B	 "!!C	s#D	 "!!E	s#F	 "!!G	s#H	 "!!I	s#J	 "!!K	s#L	 "!!M	s#N	 "!!O	s#P	 "!!Q	s#R	 "!!S	s#T	 "!!U	s#V	 "!!W	s#X	 "!!Y	s#Z	 "!![	s#\	 "!!]	s#^	 "!!_	s#`	 "!!a	s#b	 "!!c	s#d	 "!!e	s#f	 "!!g	s#h	 "!!i	s#j	 "!!k	s#l	 "!!m	s#n	 "!!o	s#p	 "!!q	s#r	 "!!s	s#t	 "!!u	s#v	 "!!w	s#x	 "!!y	s#z	 "!!{	s#|	 "!!}	s#~	 "!!	s#@
 "!!A
s#B
 "!!C
s#D
 "!!E
s#F
 "!!G
s#H
 "!!I
s#J
 "!!K
s#L
 "!!M
s#N
 "!!O
s#P
 "!!Q
s#R
 "!!S
s#T
 "!!U
s#V
 "!!W
s#X
 "!!Y
s#Z
 "!![
s#\
 "!!]
s#^
 "!!_
s#`
 "!!a
s#b
 "!!c
s#d
 "!!e
s#f
 "!!g
s#h
 "!!i
s#j
 "!!k
s#l
 "!!m
s#n
 "!!o
s#p
 "!!q
s#r
 "!!s
s#t
 "!!u
s#v
 "!!w
s#x
 "!!y
s#z
 "!!{
s#|
 "!!}
s#~
 "!!
s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#h "!!is#j "!!ks#l "!!ms#n "!!os#p "!!qs#r "!!ss#t "!!us#v "!!ws#x "!!ys#z "!!{s#| "!!}s#~ "!!s#@ "!!As#B "!!Cs#D "!!Es#F "!!Gs#H "!!Is#J "!!Ks#L "!!Ms#N "!!Os#P "!!Qs#R "!!Ss#T "!!Us#V "!!Ws#X "!!Ys#Z "!![s#\ "!!]s#^ "!!_s#` "!!as#b "!!cs#d "!!es#f "!!gs#Fj 99   GAq!A1adQqS1Hq"uQwlQT!VaKq!tVaK!Q$q!t)a!R%'!)A+)9AaeGAIaK!;KM N NE
eaS
)
)C
eaS
)
)CG3su::  58q==qLGd????G3su::  58q==qLGd???? 	ArE!R%KM!OArE)!+A-ae3QU1b5[]1_QU5J15LQ5NqRTu5TUVVA
a!
%
%CLLNNNCOO%%%
a!
%
%CLLNNNCOO%%%ll^F99r"   c                     t          d          \  } }}}t          | |dz  |dz  |dz  ||z  dz  |dz  |dz  z  |dz  z  |z  |dz  |dz  z  |dz  z  |z  g          }|||dz  g}g dg d	g d
g dg dg dg dg dg dg dg
}dt          _        t	          ||          }|                                 |                                 |j        d d         |k    sJ d S )Nza, b, cr*   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r%   r&   )r   r'   r(   r)   r*   r+   )r   r   r)   r,   r-   r.   )r/   r   r/   r   r0   r1   )r   r   r   r'   r2   r3   )r+   r4   r5   r6   r7   r   )r8   r9   r:   r;   r   r7   )r   r)   r   r/   r5   r;   )r)   r,   r,   r   r<   r=   r)   )r   r   r   max_stack_sizer   r  r  r   )r   r  r   r   r   Htable0r  s           r    test_look_aheadr.    sE   I&&JAq!QArE1a4A!axAaeArE1A!1CQT!R%ZPQSUPUEUVWEWXYYA	
Aq!tA      ###$$$$$$"""%%%%%%$$$%%%	'F !#J
a
#
#CLLNNNCOO%%%9TrT?f$$$$$$r"   c            
      	   t          d          \  } }}t          | |dz  |dz  ||z  dz  g          }||z  |dz  |dz  z  |z  |z  |z  g}t          ||          }|                    d|           |j        j        }|j        j        d         }|j        j        d         }|j        |dddgd|ddggk    sJ |j        g d	g d
gk    sJ |                    d|           |j        g d	g dg dgk    sJ |j        |dddg||ddgd|ddggk    sJ |	                    d|dz  |j        j        d           |j        ||ddg||ddg||ddggk    sJ |j        g dg dg dgk    sJ |	                    d||z  |j        j        d         d           |j        ||d|dz  g|||dg||ddggk    sJ |j        g dg dg dgk    sJ |                    d|dz             |j        g dg dg dg dgk    sJ |j        ||d|dz  g|||dg||d|gdd|dggk    sJ |	                    d|dz  |dz  z  |z  |z  |z  |j        j        d                    |j        g dg dg dg dgk    sJ |j        ||d|dz  g|||dg||d|g||dz  |dggk    sJ |	                    d||z  dz  |j        j                   |j        g dg dg dg dgk    sJ |j        |||dz  |dz  g|||dg||d|g||dz  ||ggk    sJ |                    d|           |j        g dg dg dg dg dgk    sJ |j        |||dz  |dz  g|||dg||||g||dz  ||gddd|ggk    sJ |	                    d|dz  |j        j                   |j        g dg dg dg dg dgk    sJ |j        |||dz  |dz  g|||||dz  z  g||||g||dz  ||gdd||dz  z  |ggk    sJ |	                    d||z  dz  |j        j                   |j        g dg dg dg dg dgk    sJ |j        |||dz  |dz  g|||||dz  z  g||||g||dz  ||g||dz  z  ||dz  z  ||dz  z  |ggk    sJ t          | |dz  |dz  |dz  |dz  z  |z  |z  g          }t          ||g          }t          ||g          }	|	j        |j        k    sJ dS )z
    Tests for modified coset table methods.
    Example 5.7 from [1] Holt, D., Eick, B., O'Brien
    "Handbook of Computational Group Theory".

    r   r   r   r   r   r   r   N)r   NNN)Nr   NN)r   r   NNr   F)fill)r   r   NN)r   r   NN)r   r   Nr   )r   r   r   N)r   r   Nr   )NNr   N)r   r   r   N)r   r   r   r   )r   r   r   r   )r   r   r   r   )NNNr   )r   r   r   r   )NNr   r   )r   r   r   r   )r   r   r   modified_define_grpidentity
generatorsPr   modified_scanr   r   )
r   r   r   r   r,  Cr3  a_0a_1C_ms
             r    test_modified_methodsr;    s      GAq!AqD!Q$1q)**A	
1aeArEk!mAoa A1aAavH
&
A
C
&
A
C3HdD$/8T402 2 2 2 27,,,---/ / / / / a7,,,***---/ / / / / 3HdD$/xt48T402 2 2 2 2 OOAq!tQV_5O9993Hhd3$5$57 7 7 7 7 7)))******, , , , , OOAqsAF-a0uO===3Hhc2g6xd3xt46 6 6 6 6 7'***, , , , , aB7''---/ / / / / 3Hhc2g6xd3xx84402 2 2 2 2
 OOAq"uQU{1}Qq(!&*;A*>???7''') ) ) ) ) 3Hhc2g6xd3xx8#r'8T24 4 4 4 4
 OOA!ax1117|||''$& & & & & 3HhRb9xd3xx8#r'8S13 3 3 3 3
 a7|||'$$---	/ / / / /
 3HhRb9xd3x8<#r'8S14x0	2 2 2 2 2 OOAq!tQV_---7|||\\\<<<OaOaOabbbbb3HhRb9xc#r'k:x8<#r'8S14S"Wh7	9 9 9 9 9 OOA!ax1117|||$$$$	& & & & &
 3HhRb9xc#r'k:x8<#r'8S1b[#c2g+s37{HE	G G G G G 	AqD!Q$2aeAa011AAs##A
&q1#
.
.C9r"   N)sympy.combinatorics.fp_groupsr   sympy.combinatorics.coset_tabler   r   r   r   sympy.combinatorics.free_groupsr   sympy.testing.pytestr	   r!   r)  r.  r;   r"   r    <module>rA     s    1 1 1 1 1 1> > > > > > > > > > H H H H H H 6 6 6 6 6 6 % % % % % %e# e# e#P t t tn% % %(o  o  o  o  o r"   