o
    FZh:o                     @   sn   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d Ze
dd	 Zd
d Zdd ZdS )    )FpGroup)
CosetTablecoset_enumeration_rcoset_enumeration_c)modified_coset_enumeration_r)
free_group)slowc                  C   s  t d\} }}t| |d |d |d |d  | | g}t||g}|d| |jg dgks3J |jdgks;J |jdksBJ |jdgksJJ |d|d  |jg dgks\J |jdgksdJ |jdkskJ |jdgkssJ |d|d  |jg dg dg d	gksJ |jg d
ksJ |jdksJ |jg d
ksJ |d|d |d  | |  |jg dg dg dgksJ |jg d
ksJ |jdksJ |jg d
ksJ |d|d  |jg dg dg dg dg dgksJ |jg dksJ |jdksJ |jg dksJ |d|d  |jg dg dg dg dg dgks6J |jg dks@J |jdksHJ |jg dksRJ |d|d |d  | |  |jg dg dg dg dg dgksyJ |jg dksJ |jdksJ |jg d
ksJ t| |d |d || d g}t||| g}|d||  |jg dg dgksJ |jddgksJ |jdksJ |jddgksJ |d|d  |jg dg dgksJ |jddgksJ |jdksJ |jddgksJ |d|d  |jg dg dg dgks*J |jg d
ks4J |jdks<J |jg d
ksFJ |d|| d  |jg dg dg dgksaJ |jg d
kskJ |jdkssJ |jg d
ks}J |d|d  |jg dg dg dgksJ |jg d
ksJ |jdksJ |jg d
ksJ |d|d  |jg dg dg dgksJ |jg d
ksJ |jdksJ |jg d
ksJ |d|| d  |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  |jg dg dg dg d g dgksCJ |jg d!ksMJ |jd"ksUJ |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   Zscan_and_filltablepnomega)Fxyfc r   Y/var/www/auris/lib/python3.10/site-packages/sympy/combinatorics/tests/test_coset_table.pytest_scan_1   s   ,   
  """"..r   c                  C   s  t d\} }}t| |d |d |d |d  | | g}t||g}|  |  t||g}|  |  g dg dg dg}|j|ksKJ |j|ksRJ t d\} }}}	t| |	d | |	 |d  |d | | |d  |d |	 | |	d  g}
t|
g }|  t|
g }|  g d	g}|j|ksJ |j|ksJ t d
\} }}t| |d |d || d |d |d  d |d |d  d 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	sJ |j|k	sJ t d
\} }}t| |d |d || d |d | d |d | d ||d  d |d |d  d |d | | | d ||d  | | d g	}t||g}t||g}d}tt|j	D ]}|j	| |k
rF|d7 }
q7|dk
sPJ d}tt|j	D ]}|j	| |k
ri|d7 }
qZ|dk
ssJ t| |d |d  | | |d  | | |d  |d |d  | | |d  | | |d  g}t||g}|  |  t||g}|  |  g dg}|j|k
sJ |j|k
sJ 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            )r0      r!   r   )r"   r         )   r2   r   r-   )r.   r!   r1      )r3         r"   )   r#   r"      )r#          !   )r<   "   r(   r#   )r%   r)   #   r>   )r>   $   %   r%   )r9   r&   r%   r8   )r&   &   '   r)   )r(   rB   rA   r'   )(   r*   r'   )   )*   r(   r=   +   ),   r>   r)   -   )r*   .   /   r=   )r=   0   1   r*   )2   r+   r0   3   )4   r0   r+   rL   )r,   rM   5   6   )rQ   7   8   r,   )rD   r-   r,   rC   )r-   r7   r6   r4   )r5   r/   r.   r.   )r/   9   :   ;   )rV   <   rN   r/   )r1   rO   =   r2   )r2   >   ?   r1   )@   r3   r<   A   )rK   r<   r3   rX   )rY   r4   rQ   B   )C   rQ   r4   D   )rT   r5   rV   E   )F   rV   r5   rZ   )r6   r[   G   H   )rc   I   r_   r6   )r7   rD   J   K   )rf   L   r9   r7   )r:   r8   M   N   )O   rh   r8   r@   )rA   r9   rg   P   )ri   Q   R   r:   )rF   r;   r:   rE   )r;   S   T   U   )rp   V   r\   r;   )r?   rG   W   X   )rs   Y   Z   r?   )rH   r@   r?   rG   )r@   rm   rl   rj   )rk   re   rD   rA   )rB   rE   [   \   )rw   ]   rH   rB   )rI   rC   ^   _   )`   ry   rC   rS   )a   rv   rE   rm   )rn   rF   b   c   )d   r}   rF   rJ   )e   rr   rG   ru   )rm   rH   rx   r|   )rz   f   g   rI   )h   rJ   rI   i   )rJ   j   k   r   )rX   l   m   rK   )r   rL   rK   r   )rL   n   o   rO   )rN   r   r   rM   )p   rP   rM   q   )r   rN   rW   s   )t   rX   rO   u   )rP   v   w   rW   )rW   ra   r]   rP   )rR   r^   x   y   )r   z   {   rR   )r   rS   rR   r   )rS   r   r   r{   )r`   |   }   rT   )r   rU   rT   r   )rU   ~         )r   r   r`   rU   )r]         rY   )r   rZ   rY   r   )rZ   r   r   ra   )r\   r   r   r[   )   rb   r[      )   r\   rq      )   r]   ra      )r_   r   r   r^   )   r   r^      )r   r_   rd   r   )   r`   r      )rb         rq   )rq         rb   )   rc   rf      )   rf   rc   r   )rd   r      r   )r         rd   )re         ry   )ry      r   re   )rg   r      rh   )rh         rg   )   ri   rp      )r   rp   ri   r   )r   rj   rs      )   rs   rj      )r   rk   rw      )   rw   rk   r   )rl   r         )r      r   rl   )r~   r   r   rn   )r   ro   rn   r   )ro            )r      r   ro   )rr         rx   )rx   r   r   rr   )rt   r         )r         rt   )ru   ru   rt   r   )rv         r}   )r}      r   rv   )   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     )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   r0  )r   !  "  #  )r>  $  r   r   )r   %  &  r   )r3  r   r   r2  )r   '  (  r   )r   r   )  rD  )rD  *  +  r   )r5  r   r   r4  )r   rA  r@  r   )r   rC  rB  r   )r7  r   r   r6  )r   ,  -  r   )r   r+  r*  r   ).  r   r   /  )0  r   r   1  )r   r%  r$  r   )2  r   r   3  )rJ  r   r   rI  )4  r   r   5  )6  r   r   7  )r   rH  rG  r   )rL  r   r   rK  )8  r   r?  9  ):  rD  r   ;  )r   <  =  r   )r   >  ?  r   )@  r   r   A  )B  r   r   rZ  )r   r[  C  r   )r   D  E  r   )r   F  G  r   )r   H  r\  r   )r   r]  I  r   )r   J  K  r   )L  r   r   M  )rY  r   r   rd  )re  r   r   N  )O  r   r   P  )ra  r   r   Q  )R  r   r   rf  )r   rg  S  r  )r  T  rk  r   )r   U  V  r?  )r?  W  rh  r   )r   X  Y  r   )r   rm  ri  r   )r   rj  Z  r  )r  [  \  r   )r   ]  ^  r   )r   _  rl  r   )`  r   r   a  )rz  r   r   rb  )rc  r   r   r^  )b  r   r   c  )rx  r   r   d  )e  r   r   rt  )f  r   r  g  )h  r  r   ry  )rs  r   r  i  )j  r  r   rw  )r   r{  k  l  )r  m  r~  r   )r   r  n  o  )r  p  r|  r   )r   r}  q  r  )r  s  t  r   )rN  r   r   rM  )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    )ro  r  r	  ru  )rv  r
  r  r  )  r  r
    )  r  r>    )rr  r>  r  rn  )r  r  r    )  r  r  r  )r  r  r    )  r  r  r  )r  r  r    )  r  r    )r  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  r  )r  r      )r    r  r  )r  r"      )r    r/  r  )r  r0  r  r  )r  r  r  r  )r  r       )r    r#  r  )r$  r      )  r  r  r'  )  r  r   r)  )r*  r!      )  r  r!  r%  )  r  r"  r-  )r)  r#  r  r  )r    rN  r$  )r%  rJ    r  )r&  r      )r    r  r&  )r'  rN  r  r  )r(  r6      )r    r3  r(  )r  r  rJ  r*  )r+  rK      )r    r7  r+  )r,  r2      )r    r5  r,  )r-  r/  r  r  )r8  r.      )  r  r.  r;  )r<  r1      )  r  r1  r9  )  r  r2  rA  )rB  r3  r    )r:  r4      )  r  r4  rF  )rA  r5  r  r  )r  r  r6  rB  )rG  r7  r    )r      r8  )rP  r9  r8  rO  )r9      r  )r      r:  )rR  r;  r:  rQ  )r;  r  r  r  )r  r  r  r<  )rT  r=  r<  rS  )r=        )r    r  r=  )r@  rQ      )r    rV  r@  )rC  rO      )r    rR  rC  )rE  rU      )r      rE  )rV  rF  rE  rU  )rF  r  r  r  )r  r  rK  rG  )rH  rS      )r    rP  rH  )rW  rI      )  r  rI  r`  )rp  rL      )  r  rL  rX  )r_  rM      )  r  rM  r  )  r  rO  r  )r  rP  r    )  r  rQ  r  )r  rR  r  r   )r  r  rS  r  )r  rT      )  r  rT  rq  )  r  rU  r  )r  rV  r  r  )r    r   rW  )r  rX  rW  r  )rX  r    r  )rd  r  r  rY  )r  rZ  rY  r  )rZ  r  r  r]  )r\  r  r  r[  )r  r^  r[  r  )r  r\  rc  r  )r  rd  r]  r  )r^  r  r  rc  )r    r  r_  )r  r`  r_  r  )r`  r   r  r  )rl  r  r  ra  )r  rb  ra  r  )rb  r  r  rz  )ri  r  r  re  )r  rf  re  r  )rf  r  r  rm  )rh  r  r  rg  )r  rn  rg  r  )r  rh  rr  r  )r  ri  rm  r  )rk  r  r  rj  )r  ru  rj  r  )r  rk  ro  r  )r  rl  rz  r  )rn  r  r  rr  )ru  r  r  ro  )r  r  r  rp  )r  rq  rp  r  )rq  r    r  )r  r  r  rs  )r  rt  rs  r  )rt  r  r  r  )r  r  r  rv  )r  rw  rv  r  )rw  r  r  r  )r  r  r  rx  )r  ry  rx  r  )ry  r  r  r  )r|  r  r  r{  )r  r  r{  r  )r  r|  r  r  )r~  r  r  r}  )r  r  r}  r  )r  r~  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r      )r    r  r  )r  r  r  r  )r  r  r	  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r    )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r	  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r
  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  r	  )r  r  r  r  )r  r  r  r  )r  r  r  r  )r  r  r  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   ZC_rC_cZtable1rstZE1Ztable2abZCoxZtable3ZB_2_4Zindex_riZindex_cMZtable4r   r   r   test_coset_enumeration~   s  ,L


D
	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
                                               !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z  {  |  }  ~                                     	    
                                                                                             !    "    #    $    %    &    '    (    )    *    +    ,    -    .    /    0    1    2    3    4    5    6    7    8    9    :    ;    <    =    >    ?    @    A    B    C    D    E    F    G    H    I    J    K    L    M    N    O    P    Q    R    S    T    U    V    W    X    Y    Z    [    \    ]    ^    _    `    a    b    c    d    e    f    g    h    i    j    k    l    m    n    o    p    q    r    s    t    u    v    w    x    y    z    {    |    }    ~                                                         	      
                                                                                                                                           !      "      #      $      %      &      '      (      )      *      +      ,      -      .      /      0      1      2      3      4      5      6      7      8      9      :      ;      <      =      >      ?      @      A      B      C      D      E      F      G      H      I      J      K      L      M      N      O      P      Q      R      S      T      U      V      W      X      Y      Z      [      \      ]      ^      _      `      a      b      c      d      e      f      g      h      i      j      k      l      m      n      o      p      q      r      s      t      u      v      x@T

fr  c                  C   s   t d\} }}}t| |d |d |d || d |d |d  |d  | |d |d  |d  | g}|||d 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swJ 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   r,   r-   )r   r
   r   r#   r.   r/   )r'   r0   r1   r2   r3   r   )r4   r5   r6   r7   r   r3   )r   r%   r   r+   r1   r7   )r%   r(   r(   r   r8   r9   r%   )r   r   r   Zmax_stack_sizer   r  r  r   )r   r  r  r   r   HZtable0r  r   r   r   test_look_ahead  s$   Z

r  c            
   
   C   s  t d\} }}t| |d |d || d g}|| |d |d  | | | g}t||}|d| |jj}|jjd }|jjd }|j|dddgd|ddggksUJ |jg d	g d
gksbJ |d| |jg d	g dg dgksxJ |j|dddg||ddgd|ddggksJ |j	d|d |jjdd |j||ddg||ddg||ddggksJ |jg dg dg dgksJ |j	d|| |jjd dd |j||d|d g|||dg||ddggksJ |jg dg dg dgksJ |d|d  |jg dg dg dg dgksJ |j||d|d g|||dg||d|gdd|dggks2J |	d|d |d  | | | |jjd  |jg dg dg dg dgks]J |j||d|d g|||dg||d|g||d |dggks}J |	d|| d |jj |jg dg dg dg dgksJ |j|||d |d g|||dg||d|g||d ||ggksJ |d| |jg dg dg dg dg dgksJ |j|||d |d g|||dg||||g||d ||gddd|ggksJ |	d|d |jj |jg dg dg dg dg dgks&J |j|||d |d g|||||d  g||||g||d ||gdd||d  |ggksUJ |	d|| d |jj |jg dg dg dg dg dgksyJ |j|||d |d g|||||d  g||||g||d ||g||d  ||d  ||d  |ggksJ t| |d |d |d |d  | | g}t
||g}t||g}	|	j|jksJ 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   Zmodified_defineZ_grpidentity
generatorsPr   Zmodified_scanr   r   )
r   r   r   r   r  Cr  Za_0Za_1ZC_mr   r   r   test_modified_methods  s    $























.









.


",r#  N)Zsympy.combinatorics.fp_groupsr   Zsympy.combinatorics.coset_tabler   r   r   r   Zsympy.combinatorics.free_groupsr   Zsympy.testing.pytestr   r   r  r  r#  r   r   r   r   <module>   s    h
    ;