#13726: The semimonomial group
-------------------------------------------------+-------------------------
       Reporter:  tfeulner                       |        Owner:  joyner
           Type:  enhancement                    |       Status:
       Priority:  major                          |  needs_review
      Component:  group theory                   |    Milestone:  sage-5.13
       Keywords:  (semi-)monomial group,         |   Resolution:
  semilinear action, isometry group              |    Merged in:
        Authors:  Thomas Feulner                 |    Reviewers:
Report Upstream:  N/A                            |  Work issues:
         Branch:                                 |       Commit:
   Dependencies:                                 |     Stopgaps:
-------------------------------------------------+-------------------------

Comment (by vbraun):

 * Your `_element_class` method doesn't do anything non-trivial, its
 simpler to use
   {{{
 class SemimonomialGroup(...):
     Element = SemimonomialGroupElement
   }}}
   instead.

 * Your parent overrides `__call__`, thats a big no-no in our
 parent/element framework. By default, calling the parent will end up using
 `SeminmonomialGroupElement.__init__`. If you need to normalize arguments,
 you should implement a `SemimonomialGroup._element_constructor_` method.
 See e.g. Simon King's talk at http://wiki.sagemath.org/days53/schedule for
 details. (This should be better documented in the developer manual, I
 know).

 * Also run the testsuite for elements, e.g.
 `TestSuite(S.an_element()).run()`

 * It would be nice to have exceptions in py3-compatible syntax (this
 should also go into the developer manual) and lower-case:
   {{{
     raise Exception, 'This is a boo-boo'   # bad
     raise Exception('this is a boo-boo')   # good
   }}}

 * Is `SemimonomialGroup` really used in the literature? A quick googling
 doesn't find any other references. Its a bit confusing since you are not
 talking about a generalization of monomial groups. The latter is already
 quite general, e.g. every supersolvable group. Perhaps
 `AutomorphismGroupOfLinearCode` would be a more fitting description? Or is
 there another characterization? I realize that thats a handful, but it
 could be made available as `LinearCode.AutomorphismGroup`, say.

 * Storing the translation in a list is tricky as the user might
 inadvertently change it
   {{{
     sage: g = my_group.gen(0)
     sage: v = g.get_v()
     ...
     sage: v[0] = 1   # changes g!
   }}}
   To hold immutable data, its better to use tuples. Alternatively, use
 Sage vectors and set the immutable:
   {{{
     sage: v = vector(GF(3), [0, 1, 2])
     sage: v.set_immutable()
     sage: v[0] = 1
     ...
     ValueError: vector is immutable; please change a copy instead (use
 copy())
   }}}

--
Ticket URL: <http://trac.sagemath.org/ticket/13726#comment:9>
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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to