#12407: Add the set of PrimitiveGroups
------------------------------------+---------------------------------------
       Reporter:  trehn             |         Owner:  joyner    
           Type:  enhancement       |        Status:  needs_work
       Priority:  major             |     Milestone:  sage-5.0  
      Component:  group theory      |    Resolution:            
       Keywords:  primitive groups  |   Work issues:            
Report Upstream:  N/A               |     Reviewers:  vdelecroix
        Authors:  Thomas Rehn       |     Merged in:            
   Dependencies:                    |      Stopgaps:            
------------------------------------+---------------------------------------
Changes (by vdelecroix):

  * status:  needs_review => needs_work
  * reviewer:  => vdelecroix


Comment:

 Hi,

 Nice patch (I will need it ;-)).

 0) The primitive groups are up to isomorphism which is not mentioned in
 the documentation!

 1) Why do you use a specific class PrimitiveGroup? The simpler
 {{{
 sage: PermutationGroup(gap_group = gap.PrimitiveGroup(7,3))
 Permutation Group with generators [(2,4,6)(3,5,7), (1,2,4,3,6,7,5)]
 }}}
 seems more natural to me. The only modifications I see in your new class
 are the inheritance from UniqueRepresentation and the method _repr_ (see
 also remark 3 below) and the inheritance from UniqueRepresentation.

 2) To be complient with GAP you decide to start numerotation from 1 which,
 from my point of view, is better. However, there can be some confusion
 with Python convention of starting list from 0. In particular the
 following behavior may appear strange:
 {{{
 sage: P=PrimitiveGroups(4)
 sage: p=P[2]
 sage: p
 Primitive group number 2 of degree 4
 sage: P.rank(p)
 1
 sage: P.unrank(1)
 Primitive group number 2 of degree 4
 }}}
 Could you make it explicit in the documentation?

 3) The names provided by GAP are by far more useful than "Primitive group
 number x of degree y":
 {{{
 sage: gap.PrimitiveGroup(3,2)
 S(3)
 sage: gap.PrimitiveGroup(5,2)
 D(2*5)
 sage: gap.PrimitiveGroup(10,3)
 PSL(2, 9)
 }}}
 What do you think?

 4) Moreover, GAP provides a very nice function to identify groups in the
 database
 {{{
 sage: P=PermutationGroup(('(4,5)(6,7)(8,9)(11,12)',
 '(1,2,3,4,6,8,10,5,7,11,9)'))
 sage: P
 Permutation Group with generators [(4,5)(6,7)(8,9)(11,12),
 (1,2,3,4,6,8,10,5,7,11,9)]
 sage: gap.PrimitiveIdentification(P)
 2
 sage: gap.PrimitiveGroup(12, 2)
 M(12)
 }}}
 Could you implement it as a method of PermutationGroup? For sure, if you
 decide to keep the class PrimitiveGroup the method should be overwritten.
 Notice that the method .group_id() and aliased as .id() of
 PermutationGroup returns the index of G in the database of all permutation
 groups. The method for primitive groups could hence be named
 group_id_primtive() aliased as .id_primitive().

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12407#comment:2>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to