ó
ÇOc           @   s  d  d l  Td  d l Td  d l Td „  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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   *c         C   sV   | d k r% d G| GHt  j d ƒ n  |  } x$ | d k rQ | |  } | d 8} q. W| S(   Ni    s(   sackexp:  can't do non-positive exponenti   (   t   syst   exit(   t   xt   nt   y(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   sackexp   s    	
c         C   s   |  | |  j  ƒ  | j  ƒ  S(   N(   t   inv(   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   commutator   s    c         C   s5   x. |  D]& } x |  D] } | | } | Gq WHq Wd  S(   N(    (   t   Gt   at   bt   c(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   print_cayley_table   s
    
c         C   sê   t  |  ƒ } g  } x! |  D] } | j | j ƒ  ƒ q Wg  } d g | } xš t d | ƒ D]‰ } | | d k ru qY n  |  | } g  } xM t d | ƒ D]< }	 |  |	 | | |	 }
 d | |  j |
 ƒ <t | |
 ƒ q• W| j | ƒ qY W| S(   Ni    i   (   t   lent   appendR   t   ranget   indext   set_append_unique(   R	   R   t   Ginvst   gt   classest   markst   iR
   t   cl_at   jR   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   get_conj_classes'   s"    
c         C   s8   t  |  ƒ } g  } x | D] } | j | d ƒ q W| S(   Ni    (   R   R   (   R	   R   t   repst   cl(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   get_conj_class_reps@   s
    c         C   s7   t  |  ƒ } x$ | D] } x | D]
 } | Gq  WHq Wd  S(   N(   R   (   R	   R   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   print_conj_classesH   s
    c         C   s‚   xu |  D]m } d } xN |  D]F } | | } | | } | | k rJ d } Pn  | | k r d } Pq q W| r d | g Sq Wd d g S(   Ni   i    (    (   R	   t   et   is_idR   t   ext   xe(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   find_idP   s    

c         C   sB   |  |  } d } x+ | |  k r' | d S| |  9} | d 7} q d S(   Ni   i   i    (    (   R   t   xpt   k(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt	   get_ordera   s    

c         C   sb   t  |  ƒ } t |  | ƒ } t d | ƒ } | } x+ t d | ƒ D] } | | | <| |  9} q@ W| S(   Ni    (   R&   R   R   (   R   R%   R   t   cycsgrR$   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   get_cycsgrl   s    
c         C   s<   d } x/ |  D]' } t  | ƒ } | | k r | } q q W| S(   Ni    (   R&   (   R	   t	   max_orderR   R%   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   get_max_orderw   s    c         C   s.   g  } x! |  D] } | j  t | ƒ ƒ q W| S(   N(   R   R&   (   R	   t   ordersR   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   get_orders€   s    c         C   sr   g  } xe |  D]] } d } x8 |  D]0 } | | } | | } | | k s  d } Pq  q  W| r | j  | ƒ q q W| S(   Ni   i    (   R   (   R	   t   ZR
   t   a_in_centerR   t   abt   ba(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   get_center‡   s    

c         C   s¢   x› t  |  ƒ } xs t d | ƒ D]b } |  | } xO t d | ƒ D]> } |  | } | | } | | } t |  | ƒ t |  | ƒ q? Wq Wt  |  ƒ | k r d  Sq d  S(   Ni    (   R   R   R   (   R	   R   R   R   R   R   t   xyt   yx(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   close_group–   s    



c         C   sD   t  |  ƒ s d St |  ƒ s  d St |  ƒ s0 d St |  ƒ s@ d Sd S(   Ni    i   (   t	   is_closedt   is_associativet   has_unique_idt   has_inverses(   R	   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   is_group¦   s    c         C   sC   x< |  D]4 } x+ |  D]# } | | } t  | |  ƒ s d Sq Wq Wd S(   Ni    i   (   t
   element_of(   R	   R   R   R2   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyR5   ¶   s    
c         C   so   xh |  D]` } xW |  D]O } | | } x< |  D]4 } | | } | | } | | } | | k r+ d Sq+ Wq Wq Wd S(   Ni    i   (    (   R	   R
   R   R/   R   t   bct   ab_ct   a_bc(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyR6   ¿   s    



c         C   s™   d } xx |  D]p } d } xN |  D]F } | | } | | } | | k rP d } Pn  | | k r  d } Pq  q  W| r | d 7} q q W| d k r‘ d Sd Sd  S(   Ni    i   (    (   R	   t   num_idsR   R    R   R!   R"   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyR7   Í   s"    

c         C   sˆ   t  |  ƒ \ } } | s d Sxe |  D]] } d } xD |  D]< } | | } | | } | | k r6 | | k r6 d } Pq6 q6 W| s# d Sq# Wd S(   Ni    i   (   R#   (   R	   t   foundR   R   t	   x_has_invR   R2   R3   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyR8   â   s    

c         C   s=   t  |  ƒ } x* |  D]" } t | ƒ } | | k r d Sq Wd S(   Ni   i    (   R   R&   (   R	   R   R
   R%   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt	   is_cyclicó   s    c         C   sV   g  } xI |  D]A } d } x2 |  D]* } | | } | | } | | k r  d Sq  Wq Wd S(   Ni   i    (    (   R	   R-   R
   R.   R   R/   R0   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   is_abelianü   s    

c         C   sL   g  } x5 |  D]- } x$ | D] } t  | t | | ƒ ƒ q Wq Wt | ƒ | S(   N(   R   R   R4   (   R	   t   Git   G2R
   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt
   nilbracket  s    
c         C   s¡   d } | r# d GHd Gt  |  ƒ Hn  t j |  ƒ } xh t |  | ƒ } | r\ d Gt  | ƒ Hn  t | ƒ } t | ƒ } | d k r„ d S| | k r” d S| } q5 d  S(   Ni   s
   nilp checks   Gp s   gpp:i    (   t   print_set_as_rowt   copyRE   R   (   R	   t   verboset   Gpt   Gppt   npt   npp(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   is_nilpotent  s(    

c         C   sL   g  } x5 |  D]- } x$ |  D] } t  | t | | ƒ ƒ q Wq Wt | ƒ | S(   N(   R   R   R4   (   R	   t   G1R
   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   derived_subgroup,  s    
c         C   sž   d } | r# d GHd Gt  |  ƒ Hn  t j |  ƒ } xe t | ƒ } | rY d Gt  | ƒ Hn  t | ƒ } t | ƒ } | d k r d S| | k r‘ d S| } q5 d  S(   Ni   s	   slv checks   Gp s   gpp:i    (   RF   RG   RO   R   (   R	   RH   RI   RJ   RK   RL   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   is_solvable5  s(    

c   	      C   s—   t  |  ƒ } t  | ƒ } | | } t d | ƒ } d } xY t d | ƒ D]H } x? t d | ƒ D]. } t |  | | | g ƒ | | <| d 7} q] WqG W| S(   Ni    i   (   R   R   t   tuple(	   RN   RD   t   n1t   n2t   n3t   G3R%   R   R   (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   direct_productP  s    
c   
      C   s  t  |  ƒ } t  | ƒ } | | d k rR d t | ƒ d t | ƒ d GHt ‚ n  | | } | d k r’ d t | ƒ d t | ƒ d GHt ‚ n  g  } xb |  D]Z } t d | ƒ } x) t d | ƒ D] } | | | | | <qÄ Wt | ƒ }	 t | |	 ƒ qŸ W| S(   Ni    s   quotient:  |H| (s   ) must divide |G| (s   ).s   Empty quotient: |H| = s   , |G| = t   .(   R   t   strt   RuntimeErrorR   t   cosetR   (
   R	   t   Ht   oGt   oHt   iGHt   GHR   t   gHeR   t   gH(    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   quotienta  s"    !	
!	N(   t   sacksett	   sacktuplet	   sackcosetR   R   R   R   R   R   R#   R&   R(   R*   R,   R1   R4   R9   R5   R6   R7   R8   RA   RB   RE   RM   RO   RP   RV   Rb   (    (    (    sE   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/sackgrp.pyt   <module>
   s8   


																														