#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.