Yep so I installed GAP and started reading through the manual. Indeed,
it seems that the finite groups - permutation groups, matrix groups,
polycyclic groups - are almost always realized as permutation groups
(for matrix groups there is a 'canonical' way to do this via a
faithful permutation representation on a set of vectors). But also
there are the finitely presented groups (i.e., a group of infinite
order which however can be described by a finite set of generators and
relations between them, as in my previous post) which also constitute
an important class, and there are a lot of algorithms that apply to
them.

Also, the way they implemented groups in GAP is, roughly speaking,
using a Domain - a set of elements together with operations on them
(which can have certain properties like associativity,
commutativity,...) under which it is closed; then they go on to define
a group as a domain with 1 associative operation that has inverses,
and with an identity. As you can see, quite a lot of things apart from
groups can inherit this domain structure - would it be possible to
have something like that in sympy as well or is it too late?

Then, finite groups are constructed by Group(... comma separated
generators ... ), where the generators can be permutations or matrices
(well if you put matrices that don't generate a finite group you get
yelled at); and finitely presented groups are constructed by first
constructing a free group of a certain number of generators and then
taking the "quotient" by a set of words in the generators that are
equal to the identity element (these are the relations).

So these are some ideas for a possible start on the groups module.
What do you guys think?

On Mar 21, 1:05 am, Saptarshi Mandal <sapta.iit...@gmail.com> wrote:
> Sounds good. I am just not sure if *implementing* a pure abstract
> group class is the best way to go. From an implementation perspective,
> it would be very convenient if the abstract group class encapsulates
> the permutation group class. Implementing any other concrete group
> will then require one to a) inherit the abstract class, b) map the
> group operation to an appropriate permutation group operation and c)
> construct an isomorphism from the concrete group to the permutation
> group. This way we can reuse all the algorithms that have been
> implemented for permutation groups. This strategy is useful for
> implementation because perm group algorithms are the simplest to
> implement.
>
> I have not looked at the source code of GAP but I think the abstract
> groups that GAP allows you to create are really permutation groups
> masquerading as abstract groups. I could be hopelessly wrong though.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to