Ë
    7^(hë   ã                   óT  — 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 d dlmZmZ d dlmZmZmZ d d	lmZmZmZ ej@                  Z d
„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/ed„ «       Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d „ Z7d!„ Z8d"„ Z9d#„ Z:d$„ Z;d%„ Z<d&„ Z=d'„ Z>d(„ Z?d)„ Z@ed*„ «       ZAd+„ ZBd,„ ZCd-„ ZDd.„ ZEd/„ ZFd0„ ZGd1„ ZHd2„ ZId3„ ZJd4„ ZKd5„ ZLd6„ ZMd7„ ZNd8„ ZOd9„ ZPd:„ ZQed;„ «       ZRd<„ ZSd=„ ZTd>„ ZUd?„ ZVd@„ ZWdA„ ZXdB„ ZYdC„ ZZdD„ Z[dE„ Z\dF„ Z]dG„ Z^dH„ Z_yI)Jé    )ÚTuple)Úrubik_cube_generators)Úis_isomorphic)ÚSymmetricGroupÚCyclicGroupÚDihedralGroupÚAlternatingGroupÚAbelianGroupÚ
RubikGroup)ÚPermutationGroupÚ_orbit_transversalÚCosetÚSymmetricPermutationGroup)ÚPermutation)ÚtetrahedronÚcube)Ú_verify_bsgsÚ_verify_centralizerÚ_verify_normal_closure)ÚskipÚXFAILÚslowc                  ó*  — t        ddg«      } t        | g«      }|j                  sJ ‚t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  rJ ‚t        | g«      }|j                  | «      sJ ‚|j                  |«      rJ ‚t        g d¢«      } t        g d¢«      }t        | |«      j                  t        | |«      j                  cxk(  rdk(  sJ ‚ J ‚t        t        ddd«      «      }t        d|«      j                  |«      sJ ‚y )	Né   r   ©é   r   r   ©r   r   r   ©r   r   r   é   é   é   )r   r   r   r   r    é   r   )r   r   Ú
is_abelianÚhasÚdegreer   )ÚaÚGÚbÚgs       úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/combinatorics/tests/test_perm_groups.pyÚtest_hasr+      s  € Ü�Q˜�FÓ€AÜ˜!˜Ó€AØ�<Š<Ðˆ<Ü’IÓ€AÜ’IÓ€AÜ˜!˜Q˜Ó €AØ�|Š|ÐÐä˜!˜Ó€AØ�5‰5�Œ8€Oˆ8Ø�u‰u�QŒxÐˆ<äÒ&Ó'€AÜ’OÓ$€AÜ˜A˜qÓ!×(Ñ(Ü˜˜AÓ×%Ñ%ô+Ø)*ò+ð +ñ +ð +ð +ô 	œ Q¨¨1Ó-Ó.€AÜ��A‹;�?‰?˜1ÔÐÑó    c            	      ó¢  — t        ddg«      } t        t        | g«      j                  «       «      }|t        ddg«      t        ddg«      gk(  sJ ‚t	        t        t        t        d«      «      j                  «       «      «      dk(  sJ ‚t        | g«      j                  d¬«      }t        |«      t        ddg«      t        ddg«      gk(  sJ ‚t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  «       }t        |«      D �cg c]  }|j
                  ‘Œ }}|j                  «        |g d¢g d	¢g d
¢g d¢g d¢g d¢gk(  sJ ‚t        |j                  dd¬«      «      }|t        |«      k(  sJ ‚t        g d¢«      } t        g d¢«      }t        | |g«      j                  d¬«      }t	        t        |«      «      dk(  sJ ‚y c c}w )Nr   r   )r   r   Údimino)Úmethodr   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   T)r/   Úafr   ©r   r   r   r    r!   r   ©r4   éh  )r   Úlistr   ÚgenerateÚlenÚ
array_formÚsortÚsorted)r&   r)   r(   r'   ÚpÚv1Úv2s          r*   Útest_generaterA   '   s­  € Ü�Q˜�FÓ€AÜÔ˜q˜cÓ"×+Ñ+Ó-Ó.€AØ”˜a ˜VÓ$¤k°1°a°&Ó&9Ð:Ò:Ð:Ð:ÜŒtÔ$¤[°Ó%8Ó9×BÑBÓDÓEÓFÈ!ÒKÐKÐKÜ˜!˜Ó×&Ñ&¨hÐ&Ó7€AÜ�‹7”{ A q 6Ó*¬K¸¸A¸Ó,?Ð@Ò@Ð@Ð@Ü’IÓ€AÜ’IÓ€AÜ˜!˜Q˜Ó €AØ	�
‰
‹€AÜ $ Q£Ö	(˜1ˆ!�,‹,Ð	(€BÐ	(Ø‡G�G„IØ’)šYª	²9ò ?Úðò ð ð ä	ˆa�j‰j ¨TˆjÓ2Ó	3€BØ”˜“ÒÐÐÜÒ&Ó'€AÜÒ&Ó'€AÜ˜!˜Q˜Ó ×)Ñ)¨TÐ)Ó2€AÜŒt�A‹w‹<˜3ÒÐÑùò 
)s   ÄGc                  ó¶   — t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  «       dk(  sJ ‚t        «       j                  «       dk(  sJ ‚y )N)
r   r   r   r   r    r!   r"   é   é   é	   )
r   r   r   r    r!   r"   rC   rD   rE   r   i€¯ r   )r   r   Úorder)r&   r(   r)   s      r*   Ú
test_orderrG   >   sT   € ÜÒ2Ó3€AÜÒ2Ó3€AÜ˜!˜Q˜Ó €AØ�7‰7‹9˜ÒÐÐÜÓ×#Ñ#Ó%¨Ò*Ð*Ñ*r,   c                  óx  — t        ddd«      } t        ddd«      }t        ddd«      }t        ddd«      }t        | |«      }t        ||«      }t        || «      }t        | |«      }||k7  sJ ‚|j                  |j                  k7  sJ ‚|j                  |«      sJ ‚||k7  sJ ‚|j                  |«      sJ ‚||k(  sJ ‚y )Nr   r   r   r   )r   r   Ú
generatorsÚequals)Úp_1Úp_2Úp_3Úp_4Úg_1Úg_2Úg_3Úg_4s           r*   Útest_equalityrS   F   sÄ   € Ü
�a˜˜AÓ
€CÜ
�a˜˜AÓ
€CÜ
�a˜˜AÓ
€CÜ
�a˜˜AÓ
€CÜ
˜3 Ó
$€CÜ
˜3 Ó
$€CÜ
˜3 Ó
$€CÜ
˜3 Ó
$€Cà�#Š:Ðˆ:Ø�>‰>˜SŸ^™^Ò+Ð+Ð+Ø�:‰:�cŒ?Ðˆ?Ø�#Š:Ðˆ:Ø�:‰:�cŒ?Ðˆ?Ø�#Š:Ð‰:r,   c                  óH  — t        d«      } | j                  d«      }|j                  t        d«      gk(  sJ ‚t        g d¢«      }t        g d¢«      }t	        ||g«      }|j                  d«      }|j                  «       dk(  sJ ‚g d¢g d¢g}|D �cg c]  }t        |«      ‘Œ }}t	        |«      }|j                  d«      }	|	j                  «       d	k(  sJ ‚|	j                  d«      }
t        |
j                  d
¬«      «      }|g d¢g d¢gk(  sJ ‚d}|D �cg c]  }t        |«      ‘Œ }}t	        |«      }|j                  d«      }	|	j                  «       dk(  sJ ‚t        d«      } | j                  D �cg c]  }|j                  «       ‘Œ c}d	dgk(  sJ ‚y c c}w c c}w c c}w )Nr   r   r   r   r5   é<   ©r   r   r!   rC   r   r   r    r"   ©r   r   r   r   r!   rC   r    r"   r"   Tr6   )r   r   r   r   r    r!   r"   rC   )r   r   r   r   rC   r!   r"   r    ))r   r   r   r    r!   r   r"   rC   rD   rE   é
   é   é   é   é   é   é   é   é   é   )r   r   r   r   r    r!   ra   r"   rD   rE   rX   rY   rZ   r[   r\   r]   r^   rC   r_   r`   )r   r   r   r   r    r!   r"   rC   rE   r`   r^   rY   rZ   r[   r\   r]   rD   r_   rX   ra   iÀÄ r   )	r   Ú
stabilizerrI   r   r   rF   r8   r9   Úbasic_stabilizers)ÚSÚHr&   r(   r'   ÚG0Ú	gens_cuber>   ÚgensÚG2ÚG2_1Úvs               r*   Útest_stabilizerrl   X   sˆ  € Ü�qÓ€AØ	�‰�Q‹€AØ�<‰<œK¨›NÐ+Ò+Ð+Ð+ÜÒ&Ó'€AÜÒ&Ó'€AÜ˜!˜Q˜Ó €AØ	
�‰�a‹€BØ�8‰8‹:˜ÒÐÐâ)Ò+CÐD€IØ$-Ö.˜qŒK˜�NÐ.€DÐ.Ü˜Ó€AØ	
�‰�a‹€BØ�8‰8‹:˜Š?Ðˆ?Ø�=‰=˜Ó€DÜˆT�]‰]˜dˆ]Ó#Ó$€AØÒ)Ò+CÐDÒDÐDÐDðP€Dð
 %)Ö)˜qŒK˜�NÐ)€DÐ)Ü˜Ó€AØ	
�‰�a‹€BØ�8‰8‹:˜ÒÐÐÜ�qÓ€AØ ×2Ñ2Ö3˜!ˆA�G‰G�IÒ3¸¸1°vÒ=Ð=Ñ=ùò% /ùò *ùò
 4s   ÂFÄFÅ3Fc                  óT  — dD ]0  } t        | «      }|j                  «       j                  «       dk(  rŒ0J ‚ dD ]0  } t        | «      }|j                  «       j                  «       dk(  rŒ0J ‚ dD ]>  } dD ]7  }dD ]0  }t        | ||«      }|j                  «       j	                  |«      rŒ0J ‚ Œ9 Œ@ dD ]0  } t        | «      }|j                  «       j                  «       dk(  rŒ0J ‚ t        d	«      }t        d
«      }t        d«      }j	                  ||z  |z  «       t        ||«      sJ ‚y )N)r    r"   rX   r   ©r   r!   rC   r   )r   r   r!   )r   r!   rC   )r   r   rY   )r   r!   rE   r!   r   r    )r   ÚcenterrF   r
   Úis_subgroupr	   r   r   )ÚiÚDÚjÚkr'   ÚAÚCs          r*   Útest_centerrw   x   sB  € àò )ˆÜ˜!ÓˆØ—‘“
×!Ñ!Ó# qÓ(Ð(Ð(ð)ð ò )ˆÜ˜!ÓˆØ—‘“
×!Ñ!Ó# qÓ(Ð(Ð(ð)ð ò 1ˆØò 	1ˆAØò 1�Ü   A qÓ)�Ø—x‘x“z×-Ñ-¨aÕ0Ð0Ð0ñ1ñ	1ð1ð ò )ˆÜ˜QÓˆØ—‘“
×!Ñ!Ó# qÓ(Ð(Ð(ð)ô 	�aÓ€AÜ˜Ó€AÜ�A‹€AØ‡M�M�!�A‘#�a‘%ÔÜ˜q !Ô$Ð$Ñ$r,   c            	      ó"  — t        d«      } | j                  t        t        t	        d«      «      «      «      j                  | «      sJ ‚t        d«      }|j                  t        t        t	        d«      «      «      «      j                  |«      sJ ‚t        t        g d¢«      g«      }t        d«      }|j                  |«      j                  |«      sJ ‚dD ]d  }t        |«      } t        |«      }t        |«      }t        |«      }| |||fD ]-  }| |||fD ]"  }|j                  |«      rŒt        ||«      rŒ"J ‚ Œ/ Œf t        d«      } t        | j                  «       «      }|D ]  }	t        | |	«      rŒJ ‚ t        d«      }t        |j                  «       «      }|D ]  }	t        ||	«      rŒJ ‚ t        d«      }t        |j                  «       «      }|D ]  }	t        ||	«      rŒJ ‚ g }
dD ]j  }|
j                  t        |«      «       |
j                  t        |«      «       |
j                  t        |«      «       |
j                  t        |«      «       Œl |
D ]1  }|
D ]*  }|j                  |j                  k(  sŒt        ||«      rŒ*J ‚ Œ3 y )Nr   r!   )r   r   r   r   r    )r    r!   r"   rC   ©r   r   r   )r   Úcentralizerr   r8   Úrangerp   r	   r   r   r   r   Úgenerate_diminoÚappendr%   )rd   ru   Útrivrr   rq   rv   ÚgpÚgp2ÚelementsÚelementÚsmalls              r*   Útest_centralizerr„   “   su  € ä�qÓ€AØ�=‰=œ¤T¬%°«(£^Ó4Ó5×AÑAÀ!ÔDÐDÐDÜ˜Ó€AØ�=‰=œ¤T¬%°«(£^Ó4Ó5×AÑAÀ!ÔDÐDÐDäœ[ªÓ6Ð7Ó8€DÜ�aÓ€AØ×Ñ˜AÓ×*Ñ*¨4Ô0Ð0Ð0àò 8ˆÜ˜1ÓˆÜ˜QÓˆÜ˜‹NˆÜ˜!ÓˆØ�a˜˜A�,ò 	8ˆBØ˜1˜a �|ò 8�Ø—‘ rÕ*Ü.¨r°3Õ7Ð7Ð7ñ8ñ	8ð8ô 	�qÓ€AÜ�A×%Ñ%Ó'Ó(€HØò /ˆÜ" 1 gÕ.Ð.Ð.ð/ä˜Ó€AÜ�A×%Ñ%Ó'Ó(€HØò /ˆÜ" 1 gÕ.Ð.Ð.ð/ä�aÓ€AÜ�A×%Ñ%Ó'Ó(€HØò /ˆÜ" 1 gÕ.Ð.Ð.ð/ð €EØò %ˆØ�‰”^ AÓ&Ô'Ø�‰Ô% aÓ(Ô)Ø�‰”] 1Ó%Ô&Ø�‰”[ “^Õ$ð	%ð
 ò 4ˆØò 	4ˆCØ�y‰y˜CŸJ™JÓ&Ü*¨2¨sÕ3Ð3Ð3ñ	4ñ4r,   c                  ó€  — g d¢g d¢g} | D �cg c]  }t        |«      ‘Œ }}t        |«      }d}|j                  d¬«      D ]9  }|j                  |«      }||k(  sJ ‚|j	                  |d¬«      }||k(  sJ ‚|dz  }Œ; |j	                  d«      �J ‚|j	                  |j                  |d   «      «      |d   k(  sJ ‚y c c}w )NrV   rW   r   Tr6   r   é0   )r   r   r9   Ú
coset_rankÚcoset_unrank)rg   r>   rh   r'   rq   ÚhÚrkÚh1s           r*   Útest_coset_rankrŒ   Á   sÏ   € Ú)Ò+CÐD€IØ$-Ö.˜qŒK˜�NÐ.€DÐ.Ü˜Ó€AØ	€AØ�Z‰Z˜4ˆZÓ ò ˆØ�\‰\˜!‹_ˆØ�QŠwˆˆwØ�^‰^˜B 4ˆ^Ó(ˆØ�BŠwˆˆwØ	ˆQ‰‰ðð �>‰>˜"ÓÐ%Ð%Ð%Ø�>‰>˜!Ÿ,™, t¨A¡wÓ/Ó0°D¸±GÒ;Ð;Ñ;ùò /s   �B;c                  ó’  — t        g d¢«      } t        | g«      }t        g d¢«      }|j                  |«      rJ ‚|j                  |«      �J ‚t        g d¢«      } t        g d¢«      }t        | |g«      }|j	                  «       dk(  sJ ‚t        g d¢«      }|j                  |j
                  «      rJ ‚|j                  |«      rJ ‚t        d«      |v sJ ‚t        g d¢«      }|j                  |d	«      }|j                  }t        j                  t        t        |j                  «      «      D �cg c]  }||   ||      ‘Œ c}Ž }	|	|k(  sJ ‚|j                  |«      }t        j                  |Ž }	|	|k(  sJ ‚|j                  |«      sJ ‚t        t        g d¢«      g«      }t        g d
¢«      }	|j                  |	«      g k(  sJ ‚y c c}w )Nr1   r   r   r5   r7   ©r   r   r   r   r    r!   r   )r   r   r   r   r!   r    Tr2   )r   r   Úcoset_factorr‡   rF   r;   ÚcontainsÚbasic_transversalsÚrmulr{   r:   Úbase)
r&   r'   Úcr(   r)   Údrk   Útrrq   r>   s
             r*   Útest_coset_factorr—   Ð   s›  € Ü’IÓ€AÜ˜!˜Ó€AÜ’IÓ€AØ�~‰~˜aÔ Ð Ð Ø�<‰<˜‹?Ð"Ð"Ð"äÒ&Ó'€AÜÒ&Ó'€AÜ˜!˜Q˜Ó €AØ�7‰7‹9˜ÒÐÐÜÒ&Ó'€AØ�~‰~˜aŸl™lÔ+Ð+Ð+Ø�z‰z˜!Œ}ÐÐÜ�q‹>˜QÑÐÐÜÒ&Ó'€AØ	�‰�q˜$Ó€AØ	
×	Ñ	€BÜ×Ñ´´c¸!¿&¹&³kÓ0BÖC¨1˜2˜a™5  1¡›;ÒCÐD€AØ�Š6€Mˆ6Ø	�‰�qÓ€AÜ×Ñ˜!Ð€AØ�Š6€Mˆ6Ø�:‰:�aŒ=Ðˆ=Üœ+¢iÓ0Ð1Ó2€AÜ’IÓ€AØ�>‰>˜!Ó Ò"Ð"Ñ"ùò Ds   Ä/Gc                  óF  — t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  d«      h d£k(  sJ ‚|j                  «       h d£gk(  sJ ‚|j	                  «       r|j	                  d¬«      sJ ‚|j                  d«      t        g d¢«      t        g d¢«      t        g d¢«      gk(  sJ ‚|j                  dd	«      dt        g d¢«      fd
t        g d¢«      fdt        g d¢«      fgk(  sJ ‚t        d«      }t        |j                  |j                  dd	d	¬«      \  }}|D ]6  \  }}||   }|j                  }	|D ]  }
|j                  |
   |	z  }	Œ |	|k(  rŒ6J ‚ t        t        t        dd«      «      dgz   «      } t        | g«      }|j                  «       D �cg c]  }t        |«      ‘Œ c}dgk(  sJ ‚t        t        «       «      }|j                  «       D �cg c]  }t        |«      ‘Œ c}ddgk(  sJ ‚|j	                  «       s|j	                  d¬«      rJ ‚t        t        ddd«       t        d«      dd«      g«      }|j	                  «       s|j	                  d¬«      sJ ‚t        t        d«      «      j	                  d¬«      du sJ ‚y c c}w c c}w )Nr   r   r   >   r   r   r   F©Ústrictr0   r3   Tr   r   r"   )Úslpéd   r   )r   r   ÚorbitÚorbitsÚis_transitiveÚorbit_transversalr   r   r%   rI   Úidentityr8   r{   Úminr   )r&   r(   r)   r'   ÚtransversalÚslpsrq   Útr›   ÚwÚsÚos               r*   Útest_orbitsr©   í   s�  € Ü’IÓ€AÜ’IÓ€AÜ˜!˜Q˜Ó €AØ�7‰7�1‹:šÒ"Ð"Ð"Ø�8‰8‹:š)˜Ò$Ð$Ð$Ø�?‰?Ô §¡¸ Ô!>Ð>Ð>Ø×Ñ˜qÓ!Ü	Úó
Ü#¢IÓ.´ºIÓ0Fð	HòHð Hð Hð ×Ñ˜q $Ó'Ø
Œ[šÓ#Ð	$ q¬+²iÓ*@Ð&AØ	
ŒKš	Ó"Ð#ð	%ò%ð %ð %ô 	�aÓ€AÜ*¨1¯8©8°Q·\±\À1ÀdÐPTÔUÑ€K�Øò ‰ˆˆ1Ø�1‰gˆØ�J‰JˆØò 	"ˆAØ—‘˜Q‘ Ñ!‰Að	"à�A‹vˆˆvðô 	”Dœ˜q #›Ó'¨1¨#Ñ-Ó.€AÜ˜!˜Ó€AØŸH™H›JÖ'�qŒC��FÒ'¨A¨3Ò.Ð.Ð.ÜÔ.Ó0Ó1€AØŸH™H›JÖ'�qŒC��FÒ'¨A¨q¨6Ò1Ð1Ð1Ø�‰Ô ¨¯©À¨Ô)FÐFÐFÜœ+ a¨¨AÓ.°´¸A³¸qÀ!Ó0DÐEÓF€AØ�‰Ô  Q§_¡_¸E _Ô%BÐBÐBÜÜ�A‹óß%™¨U˜Ó3°uñ=ð =ñ =ùò (ùâ's   Æ$JÇ$Jc                  ó   — g d¢g d¢fD � cg c]  } t        | «      ‘Œ }} t        |«      }|j                  «       dk(  sJ ‚g d¢g d¢fD � cg c]  } t        | «      ‘Œ }} t        |«      }|j                  «       dk(  sJ ‚|j                  |«      sJ ‚g d¢g d¢fD � cg c]  } t        | «      ‘Œ }} t        |«      }|j                  |«      rJ ‚|j                  «       d	k(  sJ ‚|j	                  |j
                  «      }|j                  «       dk(  sJ ‚g d
¢g d¢fD � cg c]  } t        | «      ‘Œ }} t        |«      }	|	j                  «       dk(  sJ ‚|j	                  |	j
                  «      }
|
j                  «       dk(  sJ ‚|j                  |
«      sJ ‚|j                  |«      rJ ‚|j                  |«      sJ ‚t        t        d«      «      }|j                  |	«      sJ ‚|j                  |
d¬«      sJ ‚t        g d¢«      }t        g d¢«      }t        g d¢«      }t        g d¢«      }t        ||g«      }t        ||g«      }t        |«      }t        |«      }t        |«      }|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      sJ ‚|j                  |«      rJ ‚|j                  |«      rJ ‚y c c} w c c} w c c} w c c} w )N©r   r   r   r    r   )r   r   r    r   r   éx   )r   r   r   r   r    )r   r   r    r   r   rU   )r   r   r   r   r    ©r   r   r   r   r    rZ   )r   r   r   r   r    é   r    Fr™   ©r   r   r   r   r    )r   r   r   r    r   )r   r    r   r   r   ©r   r   r   r   r    )r   r   rF   Ú	is_normalÚnormal_closurerI   rp   )r>   Úgens_s5ÚG1Úgens_a5ri   Úgens3ÚG3ÚG4Úgens5ÚG5ÚG6ÚI5Úp1Úp2Úp3Úid_re   ÚH_n1ÚH_n2_1ÚH_n2_2ÚH_ids                        r*   Útest_is_normalrÅ     sà  € Ú(7ºÐ'IÖJ !Œ{˜1�~ÐJ€GÐJÜ	˜'Ó	"€BØ�8‰8‹:˜ÒÐÐÚ(7ºÐ'IÖJ !Œ{˜1�~ÐJ€GÐJÜ	˜'Ó	"€BØ�8‰8‹:˜ÒÐÐØ�<‰<˜ÔÐÐÚ&5²Ð%GÖH Œ[˜�^ÐH€EÐHÜ	˜%Ó	 €BØ�|‰|˜BÔÐÐØ�8‰8‹:˜ÒÐÐØ	×	Ñ	˜2Ÿ=™=Ó	)€BØ�8‰8‹:˜ÒÐÐÚ&5²Ð%GÖH Œ[˜�^ÐH€EÐHÜ	˜%Ó	 €BØ�8‰8‹:˜ÒÐÐØ	×	Ñ	˜2Ÿ=™=Ó	)€BØ�8‰8‹:˜ÒÐÐØ�>‰>˜"ÔÐÐØ�~‰~˜bÔ!Ð!Ð!Ø�>‰>˜"ÔÐÐÜ	œ+ a›.Ó	)€BØ�<‰<˜ÔÐÐØ�<‰<˜ 5ˆ<Ô)Ð)Ð)Ü	’_Ó	%€BÜ	’_Ó	%€BÜ	’_Ó	%€BÜ
’oÓ
&€CÜ˜"˜b˜Ó"€AÜ˜R ˜HÓ%€DÜ˜bÓ!€FÜ˜bÓ!€FÜ˜CÓ €DØ�>‰>˜!ÔÐÐØ×Ñ˜DÔ!Ð!Ð!Ø×Ñ˜DÔ!Ð!Ð!Ø�>‰>˜&Ô!Ð!Ð!Ø�>‰>˜$ÔÐÐØ�>‰>˜!ÔÐÐØ×Ñ Ô"Ð"Ð"Ø×Ñ Ô"Ð"Ð"Ð"ùòQ Kùò Kùò Iùò Is   ‹K<Á	LÂLÄLc                  óì  — g d¢g d¢g d¢g d¢g} | g d¢gz   D �cg c]  }t        |«      ‘Œ } }t        g d¢«      }| d d | dd ||dz  gfD �cg c]  }t        |«      ‘Œ c}\  }}}|j                  «       |j                  «       cxk(  r|j                  «       cxk(  rdk(  sJ ‚ J ‚|j                  |«      sJ ‚|j                  |«      rJ ‚t        t        dd	g«      g«      }|j                  |«      rJ ‚|j                  |d«      sJ ‚t        ||«      j                  t        |«      «      sJ ‚t	        d
«      j                  t	        d«      d«      sJ ‚t	        d
«      j                  t	        d
«      t        d«      z  d«      sJ ‚t        d«      j                  t	        d
«      t        d«      z  d«      rJ ‚t        d
«      j                  t	        d
«      t        d«      z  d«      sJ ‚y c c}w c c}w )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   rF   rp   r   r   )r&   r>   r)   Úxr´   ri   r·   r¸   s           r*   Útest_eqrÈ   <  sÌ  € Ú	Ò/Ò1Cò Fð 	€Aà!"Ò&8Ð%9Ñ!9Ö:˜AŒ�Q�Ð:€AÐ:ÜÒ&Ó'€AØ01°"°1°°q¸¸1°vÀÀ1ÀaÁ4¸yÐ/IÖJ¨!Ô" 1Õ%ÒJ�J€BˆˆBØ�8‰8‹:˜Ÿ™›Ô6 r§x¡x£zÔ6°QÒ6Ð6Ñ6Ð6Ð6Ø�>‰>˜"ÔÐÐØ�~‰~˜bÔ!Ð!Ð!Ü	œ;¨¨1 vÓ.Ð/Ó	0€BØ�~‰~˜bÔ!Ð!Ð!Ø�>‰>˜"˜aÔ Ð Ð Ü˜A˜qÓ!×-Ñ-Ô.>¸qÓ.AÔBÐBÐBÜ˜!Ó×(Ñ(¬¸Ó):¸AÔ>Ð>Ð>Ü˜!Ó×(Ñ(¬¸Ó):¼;Àq»>Ñ)IÈ1ÔMÐMÐMÜ˜1‹~×)Ñ)¬.¸Ó*;¼KÈ»NÑ*JÈAÔNÐNÐNÜ�q‹>×%Ñ%¤n°QÓ&7¼ÀA»Ñ&FÈÔJÐJÑJùò 	;ùâJs   ™G,ÁG1c                  ó¼  — t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  «       }|j                  «       dk(  sJ ‚|j	                  |«      sJ ‚|j                  |d«      sJ ‚|j                  |d«      rJ ‚g d¢g d¢g}|D �cg c]  }t        |«      ‘Œ }}t        |«      }|j                  «       }|j                  «       dk(  sJ ‚y c c}w )N)r   r   r   r    r   )r   r   r   r   r    r   r   rV   rW   rZ   )r   r   Úderived_subgrouprF   r±   rp   )r&   r(   r'   rv   rg   r>   rh   s          r*   Útest_derived_subgrouprË   O  sÍ   € Ü’OÓ$€AÜ’OÓ$€AÜ˜!˜Q˜Ó €AØ	×ÑÓ€AØ�7‰7‹9˜Š>Ðˆ>Ø�;‰;�qŒ>Ðˆ>Ø�=‰=˜˜AÔÐÐØ�}‰}˜Q Ô"Ð"Ð"Ú)Ò+CÐD€IØ$-Ö.˜qŒK˜�NÐ.€DÐ.Ü˜Ó€AØ	×ÑÓ€AØ�7‰7‹9˜Š?Ð‰?ùò /s   ÂCc                  ó`  — t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  sJ ‚t        | g«      }|j                  sJ ‚t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  rJ ‚t        d«      }|j	                  d«      }|j                  sJ ‚y )Nr3   r2   r«   r¯   rX   r   )r   r   Úis_solvabler   Úsylow_subgroup)r&   r(   r'   ÚPrd   s        r*   Útest_is_solvablerÐ   _  s�   € Ü’IÓ€AÜ’IÓ€AÜ˜!˜Q˜Ó €AØ�=Š=Ðˆ=Ü˜!˜Ó€AØ�=Š=Ðˆ=Ü’OÓ$€AÜ’OÓ$€AÜ˜!˜Q˜Ó €AØ�}Š}ÐÐÜ�rÓ€AØ	×Ñ˜Ó€AØ�=Š=Ð‰=r,   c                  ó  — t        «       } | d   g| dd  D �cg c]  }|dz  ‘Œ	 c}z   }t        |«      }|j                  «       dk(  sJ ‚| D �cg c]  }|dz  ‘Œ	 }}t        |«      }|j                  «       dk(  sJ ‚|j                  |d«      sJ ‚|j	                  «       }|j                  «       dk(  sJ ‚|j                  |d«      sJ ‚|j                  |d«      rJ ‚t        d«      }|j                  «       dk(  sJ ‚y c c}w c c}w )	Néÿÿÿÿr   r   l     – i  
 r   l    @eE i08 )r   r   rF   rp   rÊ   r   )rh   r>   Úgens1r´   Úgens2ri   ÚC1r'   s           r*   Útest_rubik1rÖ   n  s  € Ü Ó"€DØ�"‰XˆJ¨¨Q¨R¨Ö1 1˜!˜Q›$Ò1Ñ1€EÜ	˜%Ó	 €BØ�8‰8‹:˜Ò$Ð$Ð$ØÖ �aˆQ�‹TÐ €EÐ Ü	˜%Ó	 €BØ�8‰8‹:˜ÒÐÐØ�>‰>˜"˜aÔ Ð Ð Ø	×	Ñ	Ó	€BØ�8‰8‹:˜Ò#Ð#Ð#Ø�>‰>˜"˜aÔ Ð Ð Ø�~‰~˜b !Ô$Ð$Ð$ä�1‹€AØ�7‰7‹9˜ÒÐÑùò 2ùò !s   —C<ÁDc                  ó2  — t        d«       t        t        «       «      } | j                  «       dk(  sJ ‚t        | d d «      }|j                  «       dk(  sJ ‚|j	                  | «      rJ ‚| j                  |j                  «      }|j                  | «      sJ ‚y )Nútakes too much timel      pFoïA% r   l     È!Ûl )r   r   r   rF   r±   r²   rI   rp   )r'   r´   ri   s      r*   Ú
test_rubikrÙ   €  s‰   € äÐ	ÔÜÔ.Ó0Ó1€AØ�7‰7‹9Ð,Ò,Ð,Ð,Ü	˜!˜B˜Q˜%Ó	 €BØ�8‰8‹:˜Ò(Ð(Ð(Ø�|‰|˜AŒÐÐØ	
×	Ñ	˜"Ÿ-™-Ó	(€BØ�>‰>˜!ÔÐÑr,   c                  ó<  — t        d«      } t        d«      }| | z  | z  }|j                  «       dk(  sJ ‚|j                  dk(  sJ ‚t	        |j                  «       «      dk(  sJ ‚|j                  du sJ ‚|| z  }|j                  «       dk(  sJ ‚|j                  du sJ ‚y )Nr    é@   rZ   r   Té    F)r   r   rF   r%   r:   rž   r#   )rv   rr   r'   re   s       r*   Útest_direct_productrÝ   Œ  s›   € Ü�A‹€AÜ�aÓ€AØ	ˆ!‰ˆA‰€AØ�7‰7‹9˜Š?Ðˆ?Ø�8‰8�rŠ>Ðˆ>Üˆq�x‰x‹z‹?˜aÒÐÐØ�<‰<˜4ÑÐÐØ	ˆ!‰€AØ�7‰7‹9˜Š?Ðˆ?Ø�<‰<˜5Ñ Ð Ñ r,   c                  ó¾   — t        d«      } | j                  dd«      t        g d¢«      t        g d¢«      fv sJ ‚t        d«      | z  }|j                  dd«      du sJ ‚y )	Nr"   r   r   )r   r   r    r!   r   r   )r    r   r   r   r   r!   r    r!   F)r   Ú	orbit_repr   r   ©r'   re   s     r*   Útest_orbit_reprá   ™  sf   € Ü�aÓ€AØ�;‰;�q˜!Ó¤Ò-?Ó!@ÜÒ"Ó#ð!%ñ %ð %ð %ä�A‹�qÑ€AØ�;‰;�q˜!Ó Ñ%Ð%Ñ%r,   c                  óè   — t        d«      } dgdz  }d|d<   | j                  d«      |k(  sJ ‚t        d«      }|j                  d«      g d¢k(  sJ ‚t        d«      }|j                  d	«      g d
¢k(  sJ ‚y )Né2   r   rÒ   é   rD   r   )r   r   rÒ   r   r   r   r   r   r    r   )r   rÒ   r   r   )r   Úschreier_vectorr   r   )r'   rk   re   ÚLs       r*   Útest_schreier_vectorrç   ¡  s   € Ü�B‹€AØ	
ˆˆB‰€AØ€A€b�EØ×Ñ˜RÓ  AÒ%Ð%Ð%Ü�aÓ€AØ×Ñ˜QÓÒ#<Ò<Ð<Ð<Ü�qÓ€AØ×Ñ˜QÓ¢=Ò0Ð0Ñ0r,   c                  ó  — t        d«      } d}d}i }dddddœ|d<   d	d	d
ddœ|d
<   dddd
dœ|d<   | j                  |||¬«       | j                  d   g d¢k(  sJ ‚ddd
ddœ}| j                  |¬«      t	        g d¢«      k(  sJ ‚y )Nr"   rY   r   rC   r   rÒ   )r§   r¥   rÇ   Úer   r!   r   r    )Ú_random_prec_n)r   r   r   r   r    r!   rE   ©Ú_random_prec)r   r!   r    r   r   r   )r   Ú_random_pr_initÚ_random_gensÚ	random_prr   )rr   ÚrÚnrê   rì   s        r*   Útest_random_prrò   ¬  sµ   € Ü�aÓ€AØ
€AØ	€AØ€NØ a¨a°bÑ9€N�1ÑØ a¨a°bÑ9€N�1ÑØ a¨a°aÑ8€N�1ÑØ×Ñ�a˜¨>ÐÔ:Ø�>‰>˜"ÑÒ!3Ò3Ð3Ð3Ø ¨°Ñ4€LØ�;‰; Lˆ;Ó1ÜÒ&Ó'ò(ð (ñ (r,   c                  ó¢  — t        d«      } | j                  «       du sJ ‚| j                  «       du sJ ‚| j                  d¬«      du sJ ‚| j                  d¬«      du sJ ‚t        d«      }|j                  «       du sJ ‚|j                  d¬«      du sJ ‚|j                  d¬«      du sJ ‚d}|t	        dgddgg d	¢g«      t	        g d
¢ddgg«      t	        ddgddgg d¢g«      t	        dgg d¢g«      t	        dgg d¢ddgg d¢g«      t	        dgg d¢g«      t	        g d¢ddgg d¢ddgg«      t	        dgg d¢g«      t	        g d¢g d¢g«      t	        dgddgg d¢g d¢g«      dœ}|j                  |¬«      du sJ ‚t        d«      }|j                  «       du sJ ‚|j                  d¬«      du sJ ‚|j                  d¬«      du sJ ‚|t	        g d¢dgg«      t	        dgg d ¢g«      t	        g d!¢g d"¢g«      t	        g d#¢ddgg d$¢dgg«      t	        dgdgdgg d%¢dgddgg«      t	        ddgg d&¢g«      t	        dgdd'gg d(¢g d)¢g«      t	        g d*¢g d+¢g«      t	        g d,¢dgg d-¢dd'gg«      t	        g d.¢ddgddgg d/¢g«      dœ}|j                  |¬«      du sJ ‚t         t	        ddd¬0«      dddd«       t	        ddd¬0«      dddd«      «      } | j                  «       du sJ ‚t        d«      } | j                  «       du sJ ‚t        d1«      } | j                  «       du sJ ‚t        d«      } | j                  «        | j                  «       du sJ ‚y )2NrX   FT)Úonly_alt)Úonly_symr   r   r    )r   r"   rC   rD   rE   r   r!   )r   rD   rC   r"   r   r!   r   rE   r   r!   rD   rC   )r   r   r   r   r"   rE   r   )	r   rD   r   rC   r    r   r"   rE   r!   )r    rC   rE   r"   )r   r!   r   r   )	r   r   r    r!   r   rD   r   rE   rC   )r"   rE   rD   )r   r   rC   )	r   r   rE   r   r   rD   r"   r!   rC   )r   r!   r"   r   )r   r   rC   rD   r    rE   )r   r   r    r!   )r   r   rE   )ÚN_epsr   r   r   r   r    r!   r"   rC   rD   rE   rë   )	r   r"   r    r   rC   rD   r!   rE   r   )	r   r!   rD   r    rE   r   r   r"   rC   )r   rE   rD   r   r   r!   )r   r"   rC   r    )r"   rD   rE   )r   r   rC   r   )r   r"   rE   r   )r   rD   r   rC   r!   rE   r    r   rE   )r   rD   r   )r   r    rC   r"   )r   rD   r    rC   r   r   )r   r"   rE   r!   )r!   rD   rC   )r   r    r   r"   )r    rE   r"   )r   r!   rC   ©Úsizeé   )r   Ú
is_alt_symÚ_eval_is_alt_sym_naiver   r   r	   r   Ú_eval_is_alt_sym_monte_carlo)r'   rd   rö   rì   ru   s        r*   Útest_is_alt_symrý   »  sÃ  € Ü�bÓ€AØ�<‰<‹>˜UÑ"Ð"Ð"Ø×#Ñ#Ó%¨Ñ.Ð.Ð.Ø×#Ñ#¨TÐ#Ó2°eÑ;Ð;Ð;Ø×#Ñ#¨TÐ#Ó2°eÑ;Ð;Ð;ä�rÓ€AØ×#Ñ#Ó%¨Ñ-Ð-Ð-Ø×#Ñ#¨TÐ#Ó2°eÑ;Ð;Ð;Ø×#Ñ#¨TÐ#Ó2°dÑ:Ð:Ð:à€EØ"Ü˜˜˜a ˜VÒ%:Ð;Ó<ÜÒ0°1°a°&Ð9Ó:Ü˜˜A˜  A Ò(:Ð;Ó<Ü˜˜Ò8Ð9Ó:Ü˜˜šY¨¨A¨²Ð=Ó>Ü˜˜Ò8Ð9Ó:Üš	 A q 6ª9°q¸!°fÐ=Ó>Ü˜˜Ò8Ð9Ó:ÜšÒ&8Ð9Ó:Ü˜˜˜a ˜V¢\²9Ð=Ó>ñ
@€Lð �<‰< \ˆ<Ó2°dÑ:Ð:Ð:ä˜Ó€AØ×#Ñ#Ó%¨Ñ-Ð-Ð-Ø×#Ñ#¨TÐ#Ó2°dÑ:Ð:Ð:Ø×#Ñ#¨TÐ#Ó2°eÑ;Ð;Ð;à"ÜÒ3°a°SÐ9Ó:Ü˜˜Ò8Ð9Ó:ÜÒ*ªLÐ9Ó:Üš	 A q 6ª<¸!¸Ð=Ó>Ü˜˜˜a˜S 1 #¢|°a°S¸1¸a¸&ÐAÓBÜ˜˜A˜Ò 8Ð9Ó:Ü˜˜˜a ˜V¢Y²Ð=Ó>ÜÒ*ªLÐ9Ó:Üš	 A 3ª°q¸!°fÐ=Ó>Üš	 A q 6¨A¨q¨6²9Ð=Ó>ñ
@€Lð �<‰< \ˆ<Ó2°eÑ;Ð;Ð;äØ!Œ�A�q˜qÔ! ! Q¨¨1Ó-Ø!Œ�A�q˜qÔ! ! Q¨¨1Ó-ó	/€Að �<‰<‹>˜UÑ"Ð"Ð"ô 	�bÓ€AØ×)Ñ)Ó+¨uÑ4Ð4Ð4Ü�bÓ€AØ×)Ñ)Ó+¨uÑ4Ð4Ð4ô 	�aÓ€AØ‡L�L„NØ�<‰<‹>˜UÑ"Ð"Ñ"r,   c                  ó.  — t        d«      } | j                  ddg«      }t        d«      D ]  }||   ||dz      k(  rŒJ ‚ t        d«      }|j                  ddg«      g d¢k(  sJ ‚t        j
                  j                  ddg«      g d¢k(  sJ ‚t         t        dd«      dd	«      t        ddddd	d«      «      }t        t        ddddd	d«       t        dd«      dd	«      «      }|j                  ddg«      g d
¢k(  sJ ‚|j                  ddg«      g d
¢k(  sJ ‚y )Nr"   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r!   r   r    ©r   r   r   r   r   r   )r   Úminimal_blockr{   r   ÚTetraÚpgroupr   r   )rr   Úblock_systemrq   rd   ÚP1ÚP2s         r*   Útest_minimal_blockr  ù  s'  € Ü�aÓ€AØ—?‘? A q 6Ó*€LÜ�1‹Xò 6ˆØ˜A‰ ,¨q°1©uÑ"5Ó5Ð5Ð5ð6ä�qÓ€AØ�?‰?˜A˜q˜6Ó"Ò&8Ò8Ð8Ð8ä�<‰<×%Ñ% q¨! fÓ-²Ò=Ð=Ð=ä	Ð+œ+ a¨Ó+¨A¨qÓ1´;¸qÀ!ÀQÈÈ1ÈaÓ3PÓ	Q€BÜ	œ+ a¨¨A¨q°!°QÓ7Ð9J¼ÀQÈÓ9JÈ1ÈaÓ9PÓ	Q€BØ×Ñ˜Q ˜FÓ#Ò'9Ò9Ð9Ð9Ø×Ñ˜Q ˜FÓ#Ò'9Ò9Ð9Ñ9r,   c                  ó,  — t         t        dd«      dd«      t        dddddd«      «      } | j                  «       g d¢g d¢gk(  sJ ‚t        d«      } | j                  «       dgdz  gk(  sJ ‚t        t        dd«      «      } | j                  «       d	u sJ ‚y )
Nr   r!   r   r    r   r   rÿ   )r   r   r   r   r   r   F)r   r   Úminimal_blocksr   )rÏ   s    r*   Útest_minimal_blocksr	  	  s�   € ÜÐ*œ Q¨Ó*¨1¨aÓ0´+¸aÀÀAÀqÈ!ÈQÓ2OÓP€AØ×ÑÓÒ"4Ò6HÐ!IÒIÐIÐIä�qÓ€AØ×ÑÓ 1 # a¡% Ò(Ð(Ð(äœ Q¨Ó*Ó+€AØ×ÑÓ Ñ&Ð&Ñ&r,   c                  ó<   — t        d«      } | j                  dk(  sJ ‚y )NrX   r!   )r   Úmax_div)rd   s    r*   Útest_max_divr    s   € Ü�rÓ€AØ�9‰9˜Š>Ð‰>r,   c                  óü   — t        d«      } | j                  «       du sJ ‚t        d«      }|j                  «       du sJ ‚t        dddd¬«      }t        d	d
dd¬«      }t	        ||«      }|j                  «       du sJ ‚y )Nr!   TrC   r   r   r   r"   r÷   r   r    F)r   Úis_primitiver   r   r   )rd   rv   r&   r(   r'   s        r*   Útest_is_primitiver    s€   € Ü�qÓ€AØ�>‰>Ó˜tÑ#Ð#Ð#Ü�A‹€AØ�>‰>Ó˜tÑ#Ð#Ð#ä�A�q˜! !Ô$€AÜ�A�q˜! !Ô$€AÜ˜˜AÓ€AØ�>‰>Ó˜uÑ$Ð$Ñ$r,   c                  óÂ   — t        d«      } t        g d¢«      }d|i}| j                  d|¬«      }|t        g d¢«      k(  sJ ‚| j                  d«      } |d«      dk(  sJ ‚y )Nr!   )r   r   r   r   r    Úrandr   rë   r   )r   r   Úrandom_stab)rd   Ú
_random_elrì   r)   r‰   s        r*   Útest_random_stabr  %  sc   € Ü�qÓ€AÜš_Ó-€JØ˜JÐ'€LØ	�‰�a lˆÓ3€AØ”šOÓ,Ò,Ð,Ð,Ø	�‰�aÓ€AÙˆQ‹4�1Š9Ð‰9r,   c                  óÈ   — t        g d¢«      } t        | g«      }|j                  dk(  sJ ‚t        g d¢«      }t        g d¢«      }t        ||g«      }|j                  dk(  sJ ‚y )Nr3   r   r­   r«   r   )r   r   Útransitivity_degree)Úpermrv   Úgen1Úgen2ÚAlts        r*   Útest_transitivity_degreer  /  sb   € Ü’yÓ!€DÜ˜$˜Ó €AØ× Ñ  AÒ%Ð%Ð%Ü’Ó'€DÜ’Ó'€Dä
˜D $˜<Ó
(€CØ×"Ñ" aÒ'Ð'Ñ'r,   c                  óü  — t        t        j                  j                  «      ddgk(  sJ ‚t	        d«      } ddg}t        g d¢«      t        g d¢«      t        g d¢«      g}| j                  ||d«      ||fk(  sJ ‚t        d«      }dt        g d	¢«      t        g d¢«      t        g d¢«      gi}ddg}t        g d¢«      t        g d
¢«      t        g d¢«      g}|j                  g |j                  d|¬«      ||fk(  sJ ‚y )Nr   r   r   r3   r2   r1   r!   r)   r   r   r   rë   )	r=   r  r  r“   r   r   Úschreier_sims_randomr   rI   )rd   r“   Ústrong_gensrr   rì   s        r*   Útest_schreier_sims_randomr  :  s  € Ü”%—,‘,×#Ñ#Ó$¨¨A¨Ò.Ð.Ð.ä�qÓ€AØˆqˆ6€DÜšyÓ)¬;²yÓ+AÜšiÓ(ð*€Kà×!Ñ! $¨°QÓ7¸DÀ+Ð;NÒNÐNÐNÜ�aÓ€AØœ+¢iÓ0´+ºiÓ2HÜ$¢YÓ/ð1ð 2€Làˆqˆ6€DÜšyÓ)¬;²yÓ+AÜšiÓ(ð*€Kà×!Ñ! " a§l¡l°AØ$ð "ó &Ø*.°Ð)<ò=ð =ñ =r,   c                  óX  — t        d«      } | j                  «        | j                  }| j                  }|g d¢k(  sJ ‚| j	                  ||dd¬«      }| j	                  ||d«      }|d   g d¢k(  sJ ‚t        | |d   |d   «      du sJ ‚|d   g d¢k(  sJ ‚t        | |d   |d   «      du sJ ‚y )	Nr    r0   r   F)Ú
randomizedr   r1   T)r   Úschreier_simsr“   r  Úbaseswapr   )rd   r“   r  Údeterministicr!  s        r*   Útest_baseswapr%  L  sÃ   € Ü�qÓ€AØ‡O�OÔØ�6‰6€DØ—-‘-€KØ’9ÒÐÐØ—J‘J˜t [°!À�JÓF€MØ—‘˜D +¨qÓ1€JØ˜ÑšyÒ(Ð(Ð(Ü˜˜=¨Ñ+¨]¸1Ñ-=Ó>À$ÑFÐFÐFØ�a‰=šIÒ%Ð%Ð%Ü˜˜: a™=¨*°Q©-Ó8¸DÑ@Ð@Ñ@r,   c                  ó¼  — t        g d¢«      } t        | g«      }|j                  g d¢¬«      \  }}t        |||«      du sJ ‚t	        d«      }|j                  g d¢¬«      \  }}t        |||«      du sJ ‚t        d«      }|j                  dg¬«      \  }}t        |||«      du sJ ‚t        d«      }|j                  d d  }|d	   }|d   }	t        |	| «      }	t        ||	«      }t        ||	«      }	|j                  d	dg|¬
«      \  }}t        |||«      du sJ ‚t        d«      }
|
j                  d	   }|
j                  |dz  g¬«      \  }}t        |
||«      du sJ ‚y )Nr°   r0   )r“   Tr!   r   r   rC   r   )r“   rh   rY   r   )rh   )
r   r   Úschreier_sims_incrementalr   r   r   r	   rI   r’   r   )r¡   ÚTrivialGroupr“   r  rd   rr   ru   rh   Úgen0r  rv   Úgens               r*   Útest_schreier_sims_incrementalr+  Z  sŠ  € Üš?Ó+€HÜ# X JÓ/€LØ$×>Ñ>ÂIÐ>ÓNÑ€Dˆ+Ü˜ d¨KÓ8¸DÑ@Ð@Ð@Ü�qÓ€AØ×3Ñ3ºÐ3ÓCÑ€Dˆ+Ü˜˜4 Ó-°Ñ5Ð5Ð5Ü�aÓ€AØ×3Ñ3¸!¸Ð3Ó=Ñ€Dˆ+Ü˜˜4 Ó-°Ñ5Ð5Ð5Ü˜Ó€AØ�<‰<™ˆ?€DØ�‰7€DØ�‰7€DÜ��t�eÓ€DÜ��dÓ€DÜ��dÓ€DØ×3Ñ3¸!¸Q¸ÀdÐ3ÓKÑ€Dˆ+Ü˜˜4 Ó-°Ñ5Ð5Ð5Ü�B‹€AØ
�,‰,�q‰/€CØ×3Ñ3¸#¸q¹&¸Ð3ÓBÑ€Dˆ+Ü˜˜4 Ó-°Ñ5Ð5Ñ5r,   c                 óì  ‡‡— d„ }ˆfd„}ˆfd„}d„ }t        | ||«      D �]Ì  } t        | «      }t        | «      }t        | «      }	|j	                  |«      }
|
j                  |«      sJ ‚|j	                  |«      }|j                  |«      sJ ‚|j	                  ||	¬«      }
|
j                  |«      sJ ‚dgŠ|j                  d«      j                  |j	                  |«      «      sJ ‚ddgŠ|j                  d«      j                  d«      j                  |j	                  |«      «      sJ ‚dd	gŠ|j	                  |«      }d	gŠ|j	                  |«      }|j	                  ||¬«      j                  |«      sJ ‚|j                  «       \  }}|j                  d
   Š|j	                  |||¬«      }t        |||j                  «      du sJ ‚|j                  D �cg c]  } ||«      du ‘Œ c}r�ŒÍJ ‚ y c c}w )Nc                  ó   — y)NT© ©rÇ   s    r*   ú<lambda>z"_subgroup_search.<locals>.<lambda>u  s   � r,   c                 ó@   •— ‰D �cg c]
  } | |«      ‘Œ c}‰k(  S c c}w ©Nr.  )rÇ   ÚpointÚpointss     €r*   r0  z"_subgroup_search.<locals>.<lambda>v  s   ø€ °vÖ >¨e¡ 5¥Ò >À&Ñ H€ ùÒ >s   †c                 ó6   •— t        | ‰«      t        ‰| «      k(  S r2  )r’   )rÇ   r)   s    €r*   r0  z"_subgroup_search.<locals>.<lambda>w  s   ø€ œD  A›J¬$¨q°!«*Ñ4€ r,   c                 ó   — | j                   S r2  )Úis_evenr/  s    r*   r0  z"_subgroup_search.<locals>.<lambda>x  s
   € ˜!Ÿ)™)€ r,   )Úinit_subgrouprC   r   r    r!   r   )r“   r  T)
r{   r   r	   r   Úsubgroup_searchrp   rb   r'  rI   r   )rq   rs   rt   Ú	prop_trueÚprop_fix_pointsÚprop_comm_gÚ	prop_evenrd   ru   rv   ÚSymr  Úfix35Úfix5r“   r  Úcomm_gr*  r)   r4  s                     @@r*   Ú_subgroup_searchrB  t  s  ù€ Ù€IÛH€OÛ4€KÙ#€IÜ�1�a˜‹^ó GˆÜ˜1ÓˆÜ˜QÓˆÜ˜‹NˆØ×Ñ 	Ó*ˆØ�‰˜qÔ!Ð!Ð!Ø×Ñ 	Ó*ˆØ�‰˜qÔ!Ð!Ð!Ø×Ñ 	¸ÐÓ;ˆØ�‰˜qÔ!Ð!Ð!Ø�ˆØ�|‰|˜A‹×*Ñ*¨1×+<Ñ+<¸_Ó+MÔNÐNÐNØ�Q�ˆØ�|‰|˜A‹×)Ñ)¨!Ó,×8Ñ8Ø×Ñ˜oÓ.ô0ð 	0ð 0à�Q�ˆØ×!Ñ! /Ó2ˆØ�ˆØ× Ñ  Ó1ˆØ× Ñ  ÀÐ ó ß‰k˜$Óð ð 	 ð  à×7Ñ7Ó9ÑˆˆkØ�L‰L˜‰Oˆà×Ñ˜k°À+ÐÓNð 	ä˜F D¨&×*;Ñ*;Ó<ÀÑDÐDÐDØ4:×4EÑ4EÖF¨S‘˜CÓ  DÒ(ÕFÐFÐFñ5Gùò4 Gs   ÇG1c                  ó   — t        ddd«       y )NrX   r]   r   )rB  r.  r,   r*   Útest_subgroup_searchrD  –  s   € Ü�R˜˜QÕr,   c                  ó4   — t        d«       t        ddd«       y )NrØ   r^   r_   r   )r   rB  r.  r,   r*   Útest_subgroup_search2rF  š  s   € äÐ	ÔÜ�R˜˜QÕr,   c                  óH  — t        d«      } t        g d¢«      }| j                  |«      }|j                  sJ ‚t	        d«      }|j                  |«      j                  |«      sJ ‚dD ]F  }t        |«      } t	        |«      }t        |«      }t        |«      }|||fD ]  }t        | |«      rŒJ ‚ ŒH t        d«      } t        | j                  «       «      }|D ]  }	t        | |	«      rŒJ ‚ g }
dD ]j  }|
j                  t        |«      «       |
j                  t	        |«      «       |
j                  t        |«      «       |
j                  t        |«      «       Œl |
D ]D  }|
D ]=  }|j                  |d«      sŒ|j                  |j                  k(  sŒ0t        ||«      rŒ=J ‚ ŒF y )Nr   r0   r    ©r   r    r!   r!   ry   r   )r   r   r²   Ú
is_trivialr	   rp   r   r   r   r8   r|   r}   r%   )rd   r¡   Úclosureru   rq   rr   rv   r   r�   r‚   rƒ   r€   s               r*   Útest_normal_closurerK     sž  € ä�qÓ€AÜš9Ó%€HØ×Ñ˜xÓ(€GØ×ÒÐÐä˜Ó€AØ×Ñ˜AÓ×*Ñ*¨1Ô-Ð-Ð-àò 1ˆÜ˜1ÓˆÜ˜QÓˆÜ˜!ÓˆÜ˜‹NˆØ�a˜�)ò 	1ˆBÜ)¨!¨RÕ0Ð0Ð0ñ	1ð1ô 	�qÓ€AÜ�A×%Ñ%Ó'Ó(€HØò 2ˆÜ% a¨Õ1Ð1Ð1ð2ð €EØò %ˆØ�‰”^ AÓ&Ô'Ø�‰Ô% aÓ(Ô)Ø�‰”] 1Ó%Ô&Ø�‰”[ “^Õ$ð	%ð
 ò 7ˆØò 	7ˆCØ�‰˜r 1Õ%¨#¯*©*¸¿	¹	Ó*AÜ-¨b°#Õ6Ð6Ð6ñ	7ñ7r,   c                  óº  — t        t        g d¢«      g«      } | j                  «       d   j                  | «      sJ ‚dD ]1  }t	        |«      }|j                  «       d   j                  |«      rŒ1J ‚ t        d«      }|j                  «       }|d   j                  t	        d«      «      sJ ‚|d   j                  t        d«      «      sJ ‚|d   j                  sJ ‚y )Nr0   r   ©r!   r"   rC   r    r   r   r   )r   r   Úderived_seriesrp   r	   r   r   rI  ©r~   rq   ru   rd   Úseriess        r*   Útest_derived_seriesrQ  Ã  sÙ   € äœ[ªÓ3Ð4Ó5€DØ×ÑÓ  Ñ#×/Ñ/°Ô5Ð5Ð5àò 4ˆÜ˜QÓˆØ×ÑÓ! !Ñ$×0Ñ0°Õ3Ð3Ð3ð4ô 	�qÓ€AØ×ÑÓ€FØ�!‰9× Ñ Ô!1°!Ó!4Ô5Ð5Ð5Ø�!‰9× Ñ ¤¨qÓ!1Ô2Ð2Ð2Ø�!‰9×ÒÐÑr,   c                  óz  — t        t        g d¢«      g«      } | j                  «       d   j                  | «      sJ ‚dD ]1  }t	        |«      }|j                  «       d   j                  |«      rŒ1J ‚ t        d«      }|j                  «       }t        |«      dk(  sJ ‚|d   j                  t	        d«      «      sJ ‚y )Nr0   r   rM  r"   r   r   )r   r   Úlower_central_seriesrp   r	   r   r:   rO  s        r*   Útest_lower_central_seriesrT  Ó  s½   € ô œ[ªÓ3Ð4Ó5€DØ×$Ñ$Ó& qÑ)×5Ñ5°dÔ;Ð;Ð;àò :ˆÜ˜QÓˆØ×%Ñ%Ó'¨Ñ*×6Ñ6°qÕ9Ð9Ð9ð:ô 	�qÓ€AØ×#Ñ#Ó%€FÜˆv‹;˜!ÒÐÐØ�!‰9× Ñ Ô!1°!Ó!4Ô5Ð5Ñ5r,   c                  ó  — t        d«      } t        t        g d¢«      g«      }| j                  ||«      j	                  |«      sJ ‚t        d«      }| j                  ||«      j	                  |«      sJ ‚dD ]V  }t        |«      } t        |«      }t        |«      }| j                  ||«      j	                  | j                  ||«      «      rŒVJ ‚ t        d«      } t        dd«      }t        dd«      }t        t        g d¢«      g«      }| j                  ||«      j	                  |«      sJ ‚| j                  ||«      j	                  |«      sJ ‚t        d«      } t        d«      }| j                  || «      j	                  |«      sJ ‚y )	Nr   r0   rH  rC   r   r!   r    )r   r   r   r   r    r!   r"   )r   r   r   Ú
commutatorrp   r	   r   r
   )rd   r~   ru   rq   rr   ÚA1ÚA2s          r*   Útest_commutatorrY  ã  sg  € ä�qÓ€AÜœ[ªÓ3Ð4Ó5€DØ�<‰<˜˜dÓ#×/Ñ/°Ô5Ð5Ð5ä˜Ó€AØ�<‰<˜˜aÓ ×,Ñ,¨TÔ2Ð2Ð2àò BˆÜ˜1ÓˆÜ˜QÓˆÜ˜!ÓˆØ�|‰|˜A˜qÓ!×-Ñ-¨a¯l©l¸1¸aÓ.@ÕAÐAÐAð	Bô 	�qÓ€AÜ	�a˜Ó	€BÜ	�a˜Ó	€BÜœ[Ò)>Ó?Ð@ÓA€DØ�<‰<˜˜BÓ×+Ñ+¨DÔ1Ð1Ð1Ø�<‰<˜˜BÓ×+Ñ+¨DÔ1Ð1Ð1ä�qÓ€AÜ˜Ó€AØ�<‰<˜˜1Ó×)Ñ)¨!Ô,Ð,Ñ,r,   c                  óæ   — dD ]8  } t        | «      }t        | | dz   «      }|j                  sJ ‚|j                  rŒ8J ‚ t        ddd«      }|j                  sJ ‚t        d«      j                  du sJ ‚y )Nry   r   r!   rC   rX   F)r   r
   Úis_nilpotentr	   )rq   rv   ÚAbs      r*   Útest_is_nilpotentr]  þ  sw   € àò ˆÜ˜‹NˆÜ˜!˜Q ™UÓ#ˆØ�~Š~Ðˆ~Ø�‹Ðˆð	ô
 
�a˜˜BÓ	€BØ�?Š?Ðˆ?ä˜AÓ×+Ñ+¨uÑ4Ð4Ñ4r,   c            
      óŽ   — t        d«      D ]7  } t        t        t        t        | «      «      «      g«      }|j                  rŒ7J ‚ y )Nr!   )r{   r   r   r8   rI  )rq   r~   s     r*   Útest_is_trivialr_    s;   € Ü�1‹Xò ˆÜ¤¬T´%¸³(«^Ó!<Ð =Ó>ˆØ�‹Ðˆñr,   c                  ó(  — t        d«      } | j                  dg«      }|j                  t        d«      gk(  sJ ‚t        d«      } g }| }dD ]F  }|j	                  |«      }|j                  |«       | j                  |«      j                  |«      rŒFJ ‚ y )Nr   r   r   r!   )r   r   r   r    r   )r   Úpointwise_stabilizerrI   r   rb   r}   rp   )rd   Ústabr4  r3  s       r*   Útest_pointwise_stabilizerrc    s•   € Ü�qÓ€AØ×!Ñ! 1 #Ó&€DØ�?‰?œ{¨1›~Ð.Ò.Ð.Ð.Ü�qÓ€AØ€FØ€DØ ò @ˆØ�‰˜uÓ%ˆØ�‰�eÔØ×%Ñ% fÓ-×9Ñ9¸$Õ?Ð?Ð?ñ@r,   c                  ó  — t         j                  j                  dt        t	        d«      «      ¬«      t        g d¢«      k(  sJ ‚t         j                  j                  dt        t	        d«      «      ¬«      t        g d¢«      k(  sJ ‚y )Nr!   )Úseed)r    rC   r"   r!   r   r   r   r   rC   )r"   rC   r   r   r!   r    r   r   )r   r  Ú	make_permr8   r{   r   r.  r,   r*   Útest_make_permrg    sp   € Ü�;‰;× Ñ  ¬¬e°A«h«Ð Ó8ÜÒ,Ó-ò.ð .ð .ä�;‰;× Ñ  ¬¬e°A«h«Ð Ó8ÜÒ,Ó-ò.ð .ñ .r,   c                  ó  — ddl m}  t        dd«      }t        t	        |«      j
                  «      t        d«      t        dd«      hk(  sJ ‚ | t	        |«      j
                  Ž  | t        dd«      t        d«      «      k(  sJ ‚y )Nr   )Ú	FiniteSetr   r   )Úsympy.sets.setsri  r   Úsetr   r�   )ri  r>   s     r*   Útest_elementsrl  %  sy   € Ý)ä�A�qÓ€AÜÔ Ó"×+Ñ+Ó,´¸Q³ÄÈQÐPQÓARÐ0SÒSÐSÐSÙÔ& qÓ)×2Ñ2Ð3Ù”[  AÓ&¬°A«Ó7ò8ð 8ñ 8r,   c                  ó’   — t        t        dd«      t        dd«      «      j                  du sJ ‚t        d«      j                  du sJ ‚y )Nr   r   r    T)r   r   Úis_groupr   r.  r,   r*   Útest_is_groupro  .  sD   € ÜœK¨¨!Ó,¬k¸!¸AÓ.>Ó?×HÑHÈDÑPÐPÐPÜ˜!Ó×%Ñ%¨Ñ-Ð-Ñ-r,   c                  óf   — t        «       t        t        «       «      k(  sJ ‚t        «       dk(  du sJ ‚y )Nr   F)r   r   r.  r,   r*   Útest_PermutationGrouprq  3  s1   € ÜÓÔ!1´+³-Ó!@Ò@Ð@Ð@ÜÓ !Ñ#¨Ñ-Ð-Ñ-r,   c                  óª  — t        d«      } t        t        ddd«       t        dd«      dd«      «      }| j                  |«      t        d«      t        ddd«      t        ddd«      t        ddd«       t        d«      ddd«       t        dd«      dd«      t        ddddd«      t        ddddd«      t        ddddd«      t        ddddd«      g
k(  sJ ‚y )Nr!   r   r   r   r   r    )r	   r   r   Úcoset_transversalrà   s     r*   Útest_coset_transvesalrt  8  sã   € Ü˜Ó€AÜœ Q q¨Ó+Ð,<¬K¸¸!Ó,<¸Q¸qÓ,AÓB€AØ×Ñ˜qÓ!Ü	�Q‹œ Q¨¨1Ó-¬{¸1¸aÀÓ/CÜ	�Q˜˜1Ó	˜~œ{¨1›~¨a°°AÓ6Ð8I¼ÀAÀqÓ8IÈ!ÈQÓ8OÜ	�Q˜˜1˜a Ó	#¤[°°A°q¸!¸QÓ%?Ü	�Q˜˜1˜a Ó	#¤[°°A°q¸!¸QÓ%?ð	AòAð Añ Ar,   c                  óH  — t        t        dddd«      t        ddd«      t        dddd«      t        dd«      t        dd«      «      } t        t        dddd«      t        dd«      «      }| j                  |«      g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢gk(  sJ ‚y )Nr   r   r   r   r    rC   r!   r"   )
r   r   r   r   r   r   r   r   r   r   )
r    r!   r   r!   r"   r   rC   rC   r   r   )
r!   r    r!   r   r   r"   rD   rD   r"   r"   )
r   r   r   r   rC   rD   r   r   r   r   )
r   r   r    r    r    r    rE   rE   r    r    )
r   r   r   r   r!   r!   rX   rX   r!   r!   )
r"   r"   r"   r"   r   r   rY   rY   r   r   )
rE   rX   rD   rX   rY   r   r   r   rC   rC   )
rX   rE   rX   rC   r   rY   r   r   rY   rY   )
rD   rC   rE   rE   rE   rE   r    r    rE   rE   )
rC   rD   rC   rD   rX   rX   r!   r!   rX   rX   )
rY   rY   rY   rY   rD   rC   r"   r"   rD   rD   )r   r   Úcoset_tablerà   s     r*   Útest_coset_tablerw  B  s«   € Üœ Q q¨¨1Ó-¬{¸1¸Q¸qÓ/AÜ	�Q�q˜˜1Ó	œ{¨1¨QÓ/´¸Q¸qÓ1Aó	C€Aäœ Q q¨¨1Ó-¬{¸1¸QÓ/?Ó@€AØ�=‰=˜ÓÚ	'Ò)GÚ	'Ò)GÚ	'Ò)IÚ	)Ò+LÚ	,Ò.LÚ	+Ò-Oð	QòQð Qñ Qr,   c                  ó¨   — t        t        ddd«      t        ddd«      «      } | j                  t        ddd«      g«      }|j                  | «      sJ ‚y )Nr   r   r   r   )r   r   Úsubgrouprp   rà   s     r*   Útest_subgrouprz  O  sL   € Üœ Q q¨Ó+¬[¸¸1¸QÓ-?Ó@€AØ	�
‰
”K  ! AÓ&Ð'Ó(€AØ�=‰=˜ÔÐÑr,   c                  óÐ   ‡— t        d«      Š t        ddd«      dd«      } ‰j                  | «      }t        ˆfd„|D «       «      sJ ‚‰j                  }|D ]  }||z  }Œ	 || k(  sJ ‚y )Nr!   r   r   r   r   r    c              3   ó:   •K  — | ]  }|‰j                   v –— Œ y ­wr2  )r  )Ú.0r)   r'   s     €r*   ú	<genexpr>z)test_generator_product.<locals>.<genexpr>Y  s   øè ø€ Ò0 aˆq�A—M‘MÔ!Ñ0ùs   ƒ)r   r   Úgenerator_productÚallr¡   )r>   rh   r¦   r)   r'   s       @r*   Útest_generator_productr�  U  st   ø€ Ü�qÓ€AØŒ�A�q˜!Ó˜Q Ó"€AØ×Ñ˜qÓ!€DÜÓ0¨4Ô0Ô0Ð0Ð0Ø	�
‰
€AØò ˆØˆa‰C‰ðà�Š6€M‰6r,   c                  ót  — t         t        dd«      dd«      t        dddddd«      «      } | j                  d«      }|j                  «       dk(  sJ ‚t	        d«      } | j                  d«      }|j                  «       dk(  sJ ‚t         t        dd«      dd«      t        dddddd«      t        dd«      «      } | j                  d«      }|j                  «       dk(  sJ ‚| j                  d«      }|j                  «       d	k(  sJ ‚t        d
«      } | j                  d«      }|j                  «       dk(  sJ ‚| j                  d«      }|j                  «       dk(  sJ ‚| j                  d«      }|j                  «       dk(  sJ ‚d}d}t        dd«      D ]j  }t        |«      } | j                  d«      }|j                  «       }|d|z  z  dkD  r!t        |«      |kD  sJ ‚t        |«      }|dz  }Œ[t        |«      |k(  rŒjJ ‚ t        d«      }|j                  d«      }|j                  «       |j                  «       z  dk(  sJ ‚|j                  «       |j                  «       z  dz  dkD  sJ ‚t        d«      }|j                  d«      }|j                  «       |j                  «       z  dk(  sJ ‚|j                  «       |j                  «       z  dz  dkD  sJ ‚t	        d«      }|j                  d¬«      }|j                  «       dk(  sJ ‚t	        d«      }|j                  d¬«      }|j                  «       dk(  sJ ‚y )Nr   r!   r   r    r   r   rZ   rE   rD   rX   é   éQ   é   rœ   r`   )r>   rã   )
r   r   rÎ   rF   r   r   r{   rS  r:   r	   )rÏ   rd   ÚexpÚlengthrq   Úlsr'   s          r*   Útest_sylow_subgroupr‰  `  s  € ÜÐ*œ Q¨Ó*¨1¨aÓ0´+¸aÀÀAÀqÈ!ÈQÓ2OÓP€AØ	×Ñ˜Ó€AØ�7‰7‹9˜Š>Ðˆ>ä�bÓ€AØ	×Ñ˜Ó€AØ�7‰7‹9˜Š>Ðˆ>äØŒ�A�qÓ˜!˜QÓ¤¨Q°°1°a¸¸AÓ!>ÄÈAÈqÓ@Qó	S€Aà	×Ñ˜Ó€AØ�7‰7‹9˜Š>Ðˆ>Ø	×Ñ˜Ó€AØ�7‰7‹9˜Š>Ðˆ>ä�rÓ€AØ	×Ñ˜Ó€AØ�7‰7‹9˜ÒÐÐØ	×Ñ˜Ó€AØ�7‰7‹9˜Š?Ðˆ?Ø	×Ñ˜Ó€AØ�7‰7‹9˜Š?Ðˆ?ð €CØ€FÜ�1�a‹[ò 
%ˆÜ˜1ÓˆØ×Ñ˜QÓˆØ×#Ñ#Ó%ˆØ��3‘‰;˜Š?ä�r“7˜VÒ#Ð#Ð#Ü˜“WˆFØ�1‰H‰Cä�r“7˜fÓ$Ð$Ð$ð
%ô 	�sÓ€AØ	×Ñ˜Ó€AØ�7‰7‹9�q—w‘w“yÑ  AÒ%Ð%Ð%Ø�7‰7‹9�Q—W‘W“YÑ Ñ" QÒ&Ð&Ð&ä˜Ó€AØ	×Ñ˜Ó€AØ�7‰7‹9�q—w‘w“yÑ  AÒ%Ð%Ð%Ø�7‰7‹9�Q—W‘W“YÑ Ñ" QÒ&Ð&Ð&ä�bÓ€AØ	×Ñ˜1ÐÓ€AØ�7‰7‹9˜Š>Ðˆ>ä�bÓ€AØ	×Ñ˜1ÐÓ€AØ�7‰7‹9˜Š>Ð‰>r,   c            
      ó*  — d„ } d„ }t         t        dddd«      ddd	d
«       t        dddd	«      dd
dd«      «      } | |«      sJ ‚t        d«      } | |«      sJ ‚t        d«      } | |«      sJ ‚t        t        dddd«       t        d«      dd«       t        dd«      dd«      g«      } ||«      sJ ‚t	        d
«      } ||«      sJ ‚ t        dd«      dd«      } t        dd«      dd«      }t        d	d«      }t        |||«      } ||«      sJ ‚y )Nc                 ód   — | j                  «       }|j                  «       | j                  «       k(  S r2  )ÚpresentationrF   )rÏ   r'   s     r*   Ú_testz test_presentation.<locals>._testŸ  s%   € Ø�N‰NÓˆØ�w‰w‹y˜AŸG™G›IÑ%Ð%r,   c                 óÂ   — | j                  «       }t        |j                  «      t        | j                  «      k(  }|xr! |j	                  «       | j	                  «       k(  S r2  )Ústrong_presentationr:   rI   r  rF   )rÏ   r'   Úchks      r*   Ú_strong_testz'test_presentation.<locals>._strong_test£  sH   € Ø×!Ñ!Ó#ˆÜ�!—,‘,Ó¤3 q§}¡}Ó#5Ñ5ˆØÒ-�q—w‘w“y A§G¡G£IÑ-Ð-r,   r   r   r!   r   r   rC   r    r"   )r   r   r	   r   r   )r�  r‘  rÏ   r&   r(   r”   s         r*   Útest_presentationr’  �  s3  € ò&ò.ô
 	Ð-œ Q q¨¨1Ó-¨a°°!°AÓ6Ð8L¼ÀAÀaÈÈ!Ó8LÈQÈqÐQRÐSTÓ8UÓV€AÙ�Œ8€Oˆ8ä˜Ó€AÙ�Œ8€Oˆ8ä�qÓ€AÙ�Œ8€Oˆ8äÜ	�Q�q˜˜1Ó	˜~œ{¨1›~¨a°Ó2Ð4D´KÀÀ!Ó4DÀQÀqÓ4IÐJó	L€Aá˜Œ?Ðˆ?ä�aÓ€AÙ˜Œ?Ðˆ?àŒ�A�aÓ˜˜1Ó€AØŒ�A�aÓ˜˜1Ó€AÜ�A�aÓ€AÜ˜˜A˜qÓ!€AÙ˜Œ?Ð‰?r,   c                  óà   — t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  du sJ ‚t        g d¢«      } t        g d¢«      }t        | |g«      }|j                  du sJ ‚y )Nr0   r   Tr«   r¯   F)r   r   Úis_polycyclic)r&   r(   r'   s      r*   Útest_polycyclicr•  ¿  sj   € Ü’IÓ€AÜ’IÓ€AÜ˜!˜Q˜Ó €AØ�?‰?˜dÑ"Ð"Ð"ä’OÓ$€AÜ’OÓ$€AÜ˜!˜Q˜Ó €AØ�?‰?˜eÑ#Ð#Ñ#r,   c                  ó  — t        g d¢«      } t        | g«      }|j                  d«      du sJ ‚ t        dd«      dd«      }  t        dd«      dd«      }t        | |g«      }|j                  d«      du sJ ‚t        d	d
d«      }t        | ||g«      }|j                  d«      du sJ ‚t        d	«      j	                  d«      }|j                  d«      du sJ ‚t        d	«      j	                  d«      }|j                  d«      du sJ ‚y )N)r   r!   r   r   r   r"   r    rC   Fr   r   r   r   Tr    r!   r"   )r   r   Úis_elementaryr   rÎ   r	   )r&   r'   r(   r”   re   s        r*   Útest_elementaryr˜  Ë  s  € ÜÒ)Ó*€AÜ˜!˜Ó€AØ�?‰?˜1Ó Ñ&Ð&Ð&àŒ�A�qÓ˜!˜QÓ€AØŒ�A�qÓ˜!˜QÓ€AÜ˜!˜Q˜Ó €AØ�?‰?˜1Ó Ñ%Ð%Ð%Ü�A�q˜!Ó€AÜ˜!˜Q ˜Ó#€AØ�?‰?˜1Ó Ñ&Ð&Ð&ä�qÓ×(Ñ(¨Ó+€AØ�?‰?˜1Ó Ñ&Ð&Ð&Ü˜Ó×*Ñ*¨1Ó-€AØ�?‰?˜1Ó Ñ%Ð%Ñ%r,   c                  óp   — t        d«      } | j                  du sJ ‚t        d«      } | j                  du sJ ‚y )Nr   Fr!   T)r	   Ú
is_perfect©r'   s    r*   Útest_perfectrœ  Þ  s:   € Ü˜Ó€AØ�<‰<˜5Ñ Ð Ð Ü˜Ó€AØ�<‰<˜4ÑÐÑr,   c                  ó®   — t        t        ddd«      t        ddd«      «      } | j                  t        ddd«      g«      }| j                  |«      dk(  sJ ‚y )Nr   r   r   r   r    )r   r   ry  Úindexrà   s     r*   Ú
test_indexrŸ  å  sN   € Üœ Q q¨Ó+¬[¸¸1¸QÓ-?Ó@€AØ	�
‰
”K  ! AÓ&Ð'Ó(€AØ�7‰7�1‹:˜Š?Ð‰?r,   c                  óÔ  — t        d«      } | j                  sJ ‚t        dd«      } | j                  sJ ‚t        dd«      } | j                  rJ ‚t        d«      } | j                  sJ ‚t        d«      } | j                  rJ ‚t	        t        ddd«      t        ddd«      «      } | j                  sJ ‚t	        t        dddd«       t        dd«      dd«      «      } | j                  sJ ‚t	        t        d«       t        dd«      dd«       t        dd«      dd«       t        dd«      dd«      «      } | j                  du sJ ‚t	        t        ddddddd	dd
dddddd«      t        dddd	d
dddddddddd«      «      } | j                  sJ ‚t	        j                  ddg«      du sJ ‚t	        j                  ddg«      du sJ ‚t	        j                  ddg«      �J ‚t	        j                  g d¢«      �J ‚t	        j                  g d¢«      du sJ ‚t	        t        dddd«       t        dd«      dd«      «      } | j                  sJ ‚| j                  sJ ‚t	        t        d«      j                  Ž } | j                  du sJ ‚t	        t        dddd«      t        ddd	«      «      } | j                  sJ ‚t	        t        dd«      t        dd«      t        ddd	«      «      } | j                  du sJ ‚y )Nr   r   rC   r    r   r   Fr!   r"   rD   rE   rX   rY   rZ   r[   r\   Trn   )r!   rC   r[   )	r   Ú	is_cyclicr
   r	   r   r   Ú_distinct_primes_lemmaÚ_is_abelianrI   r›  s    r*   Útest_cyclicr¤  ë  s  € Ü�qÓ€AØ�;Š;Ðˆ;Ü�Q˜Ó€AØ�;Š;Ðˆ;Ü�Q˜Ó€AØ�{Š{Ðˆ?Ü˜Ó€AØ�;Š;Ðˆ;Ü˜Ó€AØ�{Š{Ðˆ?ô 	œ Q¨¨1Ó-¬{¸1¸aÀÓ/CÓD€AØ�;Š;Ðˆ;ÜÜ�A�q˜!˜QÓØŒ�A�qÓ˜!˜QÓó	€Að �;Š;Ðˆ;ÜÜ�A‹ØŒ�A�qÓ˜!˜QÓØŒ�A�qÓ˜!˜QÓØŒ�A�qÓ˜!˜QÓó		€Að �;‰;˜%ÑÐÐô 	Ü�A�q˜!˜Q  1 a¨¨A¨q°"°b¸"¸bÀ"ÓEÜ�A�q˜!˜Q  2 r¨2¨q°!°Q¸¸1¸bÀ"ÓEó	€Að �;Š;Ðˆ;ô ×2Ñ2°A°q°6Ó:¸dÑBÐBÐBÜ×2Ñ2°A°q°6Ó:¸dÑBÐBÐBÜ×2Ñ2°A°q°6Ó:ÐBÐBÐBÜ×2Ñ2²9Ó=ÐEÐEÐEÜ×2Ñ2²:Ó>À$ÑFÐFÐFäÜ�A�q˜!˜QÓØŒ�A�qÓ˜!˜QÓó	!€Að �;Š;Ðˆ;Ø�=Š=Ðˆ=ô 	œ.¨Ó+×6Ñ6Ð7€AØ�;‰;˜%ÑÐÐô 	Ü�A�q˜!˜QÓÜ�A�q˜!Óó	€Að �;Š;Ðˆ;ô 	Ü�A�qÓÜ�A�qÓÜ�A�q˜!Óó	€Að
 �;‰;˜%ÑÐÑr,   c                  ó”  — t        d«      } | j                  sJ ‚t        d«      } | j                  sJ ‚t        dd«      } | j                  sJ ‚t        d«      } | j                  rJ ‚t        dd«      } | j                  rJ ‚t        d«      } | j                  sJ ‚t        d«      } | j                  rJ ‚t	         t        dd«      dd«        t        dd«      dd«      dd«      «      } | j                  sJ ‚t	          t        dd«      dd«      dd«      t        ddddddd«      «      } | j                  sJ ‚t	        t        dd«      t        dd«      t        dd«      «      } | j                  rJ ‚t	          t        dd«      dd«      dd«        t        dd«      dd«      dd«      t        ddddddd«      «      } | j                  sJ ‚y )Nr   r   r    r!   r"   r   r   )r   Úis_dihedralr
   r   r   r   r›  s    r*   Útest_dihedralr§  /  sÕ  € Ü�qÓ€AØ�=Š=Ðˆ=Ü�qÓ€AØ�=Š=Ðˆ=ä�Q˜Ó€AØ�=Š=Ðˆ=Ü�A‹€AØ�}Š}ÐÐä�Q˜Ó€AØ�}Š}ÐÐÜ�Q‹€AØ�=Š=Ðˆ=Ü�Q‹€AØ�}Š}ÐÐô 	ØŒ�A�qÓ˜!˜QÓØÐŒ�A�qÓ˜!˜QÓ  1Ó%ó	'€Að �=Š=Ðˆ=ô 	ØÐŒ�A�qÓ˜!˜QÓ  1Ó%Ü�A�q˜!˜Q  1 aÓ(ó	*€Að �=Š=Ðˆ=ô 	Ü�A�qÓœ; q¨!Ó,Ü�A�qÓó	€Að �}Š}ÐÐô 	ØÐŒ�A�qÓ˜!˜QÓ  1Ó%ØÐŒ�A�qÓ˜!˜QÓ  1Ó%Ü�A�q˜!˜Q  1 aÓ(ó	*€Að �=Š=Ð‰=r,   c                  ó^  — t        ddd«      } | j                  «       g d¢k(  sJ ‚t        t        dddd«      t        dd«      t        dd«      g«      } | j                  «       ddgk(  sJ ‚t	        d«      } | j                  «       g k(  sJ ‚t	        d«      } | j                  «       dgk(  sJ ‚t        d«      } | j                  «       ddgk(  sJ ‚t        t        ddddddd«      g«      } | j                  «       dgk(  sJ ‚t        d	«      } | j                  d«      }|j                  «       dgk(  sJ ‚t        t        d
dd«      t        d
dd«      «      } | j                  «       dgk(  sJ ‚t        t        d
d«       t        d
ddd«      dddd«      g«      } | j                  «       ddgk(  sJ ‚t        d«      } | j                  d«      }|j                  «       g d¢k(  sJ ‚| j                  d«      }|j                  «       g d¢k(  sJ ‚| j                  d«      }|j                  «       g d¢k(  sJ ‚y )Nr   r   r    )r   r   r    r   r!   r"   rC   rZ   r   é   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r!   r!   r!   )r
   Úabelian_invariantsr   r   r	   r   rÎ   r   )r'   rd   s     r*   Útest_abelian_invariantsr«  \  sB  € Ü�Q˜˜1Ó€AØ×ÑÓ!¢YÒ.Ð.Ð.Üœ A q¨!¨QÓ/´¸QÀÓ1BÄKÐPQÐSTÓDUÐVÓW€AØ×ÑÓ! a¨ VÒ+Ð+Ð+Ü˜Ó€AØ×ÑÓ! RÒ'Ð'Ð'Ü˜Ó€AØ×ÑÓ! a SÒ(Ð(Ð(Ü�aÓ€AØ×ÑÓ! a¨ VÒ+Ð+Ð+äœ+ a¨¨A¨q°!°Q¸Ó:Ð;Ó<€AØ×ÑÓ! a SÒ(Ð(Ð(Ü�bÓ€AØ	×Ñ˜Ó€AØ×ÑÓ! a SÒ(Ð(Ð(Üœ Q¨¨1Ó-¬{¸1¸aÀÓ/CÓD€AØ×ÑÓ! a SÒ(Ð(Ð(Üœ+ a¨Ó+Ð-D¬[¸¸A¸qÀ!Ó-DÀQÈÈ1ÈaÓ-PÐQÓR€AØ×ÑÓ! a¨ VÒ+Ð+Ð+Ü�rÓ€AØ	×Ñ˜Ó€AØ×ÑÓ!Ò%CÒCÐCÐCØ	×Ñ˜Ó€AØ×ÑÓ!¢\Ò1Ð1Ð1Ø	×Ñ˜Ó€AØ×ÑÓ!¢YÒ.Ð.Ñ.r,   c                  ó^  — t        ddd«      } t        dd«      }t        | |g«      }|j                  «       }||j                  «       k(  sJ ‚t	        d«      }|j                  «       d   |k(  sJ ‚t        |j                  «       «      dk(  sJ ‚t        d«      }|j                  «       d   |k(  sJ ‚t        |j                  «       «      dk(  sJ ‚t        d«      }|j                  «       }t        |d   t        d«      «      sJ ‚t        |d   t        d«      «      sJ ‚|d   j                  sJ ‚y )Nr   r   r   r    r   r!   rD   )
r   r   Úcomposition_seriesrN  r   r:   r	   r   r   rI  )r&   r(   r'   Úcomp_seriesrd   ru   rP  s          r*   Útest_composition_seriesr¯  z  s1  € Ü�A�q˜!Ó€AÜ�A�qÓ€AÜ˜!˜Q˜Ó €AØ×&Ñ&Ó(€KØ˜!×*Ñ*Ó,Ò,Ð,Ð,ô 	�qÓ€AØ×ÑÓ! !Ñ$¨Ò)Ð)Ð)Üˆq×#Ñ#Ó%Ó&¨!Ò+Ð+Ð+Ü˜Ó€AØ×ÑÓ! !Ñ$¨Ò)Ð)Ð)Üˆq×#Ñ#Ó%Ó&¨!Ò+Ð+Ð+ô 	�A‹€AØ×!Ñ!Ó#€FÜ˜ ™¤K°£NÔ3Ð3Ð3Ü˜ ™¤K°£NÔ3Ð3Ð3Ø�!‰9×ÒÐÑr,   c                  óN  — t        ddd«      } t        ddd¬«      }t        | |«      j                  du sJ ‚t        ddd«      } t        ddd¬«      }t        | |«      j                  du sJ ‚t        dddd«      }  t        dd«      dd«      }t        | |«      j                  du sJ ‚y )Nr   r   r   r   r÷   TF)r   r   Úis_symmetric)r&   r(   s     r*   Útest_is_symmetricr²  ‘  s°   € Ü�A�q˜!Ó€AÜ�A�q˜qÔ!€AÜ˜A˜qÓ!×.Ñ.°$Ñ6Ð6Ð6ä�A�q˜!Ó€AÜ�A�q˜qÔ!€AÜ˜A˜qÓ!×.Ñ.°$Ñ6Ð6Ð6ä�A�q˜!˜QÓ€AØŒ�A�qÓ˜!˜QÓ€AÜ˜A˜qÓ!×.Ñ.°%Ñ7Ð7Ñ7r,   c                  ó,  — t        d«      } t        ddd«      }t        dddd¬«      t        ddd«      t        dddd¬«      t        ddd«      t        ddd«      t        ddd«      t        ddd«      t        ddd«      h}| j                  |«      |k(  sJ ‚y )Nr    r   r   r   r   r÷   )r   r   Úconjugacy_class)rd   rÇ   rv   s      r*   Útest_conjugacy_classrµ  ž  sœ   € Ü�qÓ€AÜ�A�q˜!Ó€AÜ	�Q˜˜1 QÔ	'¬°Q¸¸1Ó)=Ü˜˜A˜q¨Ô+¬[¸¸A¸qÓ-AÜ˜˜A˜qÓ!¤;¨q°!°QÓ#7Ü˜˜A˜qÓ!¤;¨q°!°QÓ#7ð	9€Að ×Ñ˜QÓ 1Ò$Ð$Ñ$r,   c                  ó0  ‡— t        d«      } t        d¬«      ht        ddd¬«      t        dd«      t        dd«      ht        ddd«      t        ddd«      hg}| j                  «       Št        |«      t        ‰«      k(  sJ ‚t	        ˆfd„|D «       «      sJ ‚y )Nr   r÷   r   r   r   c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr2  r.  )r}  ré   Úcomputeds     €r*   r~  z)test_conjugacy_classes.<locals>.<genexpr>¯  s   øè ø€ Ò/ ˆq�HŒ}Ñ/ùs   ƒ)r   r   Úconjugacy_classesr:   r€  )rd   Úexpectedr¸  s     @r*   Útest_conjugacy_classesr»  §  s”   ø€ Ü�qÓ€AÜ AÔ&Ð'Ü
�a˜ 1Ô
%¤{°1°aÓ'8¼+ÀaÈÓ:KÐ	LÜ
�a˜˜AÓ
¤¨A¨q°!Ó 4Ð	5ð7€Hð ×"Ñ"Ó$€Häˆx‹=œC ›MÒ)Ð)Ð)ÜÓ/ hÔ/Ô/Ð/Ñ/r,   c            
      óð  — t        dd«      } t        dd«      }t        | |g«      }|| z  }|j                  sJ ‚|j                  rJ ‚|j	                  «       }t        dd«      t        ddd«      t        dd«      t        d«       t        d«      dd«      t        ddd«      g}|D ]  }||v rŒJ ‚ | |z  }|j                  rJ ‚|j                  sJ ‚|j	                  «       } t        d«      dd«      t        ddd«      t        dd«      t        d«      t        dd«      t        ddd«      g}|D ]  }||v rŒJ ‚ t        t        dddd«      t        ddd«      «      }t        t        dddd«      «      } t        dd«      dd«      }	t        |	||d¬«      }|j                  sJ ‚|j	                  «       }t        dddd«      t        d«       t        dd«      dd«      t        dddd«      g}|D ]  }||v rŒJ ‚ y )Nr   r   r   r   r    ú+)Údir)r   r   Úis_right_cosetÚis_left_cosetÚas_listr   )
r&   r(   r'   Ú	rht_cosetÚ	list_reprrº  ÚeleÚ
left_cosetre   r)   s
             r*   Útest_coset_classrÆ  ±  s'  € Ü�A�qÓ€AÜ�A�qÓ€AÜ˜!˜Q˜Ó €Aà�!‘€Ià×#Ò#Ð#Ð#Ø×&Ò&Ð&Ð&à×!Ñ!Ó#€IÜ˜A˜qÓ!¤;¨q°!°QÓ#7¼ÀQÈÓ9JÜ˜A“ ¤¨A£¨q°!Ó 4´kÀ!ÀQÈÓ6JðL€Hàò ˆØ�hŠÐˆðð �1‘€Jà×(Ò(Ð(Ð(Ø×#Ò#Ð#Ð#à×"Ñ"Ó$€IØ”˜A“˜q !Ó$¤k°!°Q¸Ó&:¼KÈÈ1Ó<MÜ�ƒN”K  1Ó%¤{°1°a¸Ó';ð=€Hàò ˆØ�hŠÐˆðô 	œ Q¨¨1¨aÓ0´+¸aÀÀAÓ2FÓG€AÜœ Q¨¨1¨aÓ0Ó1€AØŒ�A�qÓ˜!˜QÓ€AÜ�a˜˜A 3Ô'€IØ×#Ò#Ð#Ð#Ø×!Ñ!Ó#€IÜ˜A˜q ! QÓ'¬°Q«Ð9J¼ÀQÈÓ9JÈ1ÈaÓ9PÜ��1�a˜Óð€Hàò ˆØ�hŠÐˆñr,   c                  ó¢   — t        d«      } | j                  dk(  sJ ‚| j                  «       dk(  sJ ‚| j                  «       t	        d«      k(  sJ ‚y )Nr!   r¬   r    )r   r%   rF   r¡   r   )r&   s    r*   Útest_symmetricpermutationgrouprÈ  ×  sH   € Ü! !Ó$€AØ�8‰8�qŠ=Ðˆ=Ø�7‰7‹9˜ÒÐÐØ�:‰:‹<œ; q›>Ò)Ð)Ñ)r,   N)`Úsympy.core.containersr   Úsympy.combinatorics.generatorsr   Ú!sympy.combinatorics.homomorphismsr   Ú sympy.combinatorics.named_groupsr   r   r   r	   r
   r   Úsympy.combinatorics.perm_groupsr   r   r   r   Ú sympy.combinatorics.permutationsr   Úsympy.combinatorics.polyhedronr   r  r   Úsympy.combinatorics.testutilr   r   r   Úsympy.testing.pytestr   r   r   r’   r+   rA   rG   rS   rl   rw   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  rD  rF  rK  rQ  rT  rY  r]  r_  rc  rg  rl  ro  rq  rt  rw  rz  r�  r‰  r’  r•  r˜  rœ  rŸ  r¤  r§  r«  r¯  r²  rµ  r»  rÆ  rÈ  r.  r,   r*   ú<module>rÒ     s¾  ðÝ 'Ý @Ý ;÷>÷ >÷:ó :å 8ß E÷ñ ç 2Ñ 2à×Ñ€òò,ò.+òò$>ò@%ò6+4ò\<ò#ò: =òF)#òXKò&ò ò ð$ ñó ðò
!ò&ò1ò(ò;#ò|:ò 'òò
	%òò(ò=ò$Aò6ò4GòD ð ñ ó ð ò
 7òF ò 6ò -ò6
5òò
@ò.ò8ò.ò
.ò
Aò
Qòòò:ðz ñó ðòB	$ò&ò& òòA òH*òZ/ò< ò.8ò%ò0ò$óL*r,   