I full heartedly agree with the idea that permutation groups should be able to act on more than just the set 1..n, using a dictionary to do the mapping transparently to the user under the hood (and this is technically totally feasible). I'm not as convinced that we should throw out the notion of fixed points. For example, given Sn, n>2, I would not say all Z/2Z subgroups are "transitive" but it sounds like you want it to.
Would it be sufficient to provide a method that, given a group, returns a representation that keeps the permuted set names the same, but restricts the domain to non-fixed points?
Abelian groups is second on my list (right after graphs + latex), but
as I've been told, "many have failed here." So I'd get out of the way
(or help) if anybody else is interested.
And I have a vested interest in permutation groups......
Rob
I've been working on this over the next few days, cleaning up the
code, and making permutation groups act over an "arbitrary" domain.
I'll be posting these in the next few days.
--Mike
--
You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group.
To post to this group, send email to sage-comb...@googlegroups.com.
To unsubscribe from this group, send email to sage-combinat-d...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
>
> Sweet!
>
> I'm assuming you're using a dictionary map? I think this could kill
> two birds with one stone. If we want to make Sage act more like GAP
> and consider the domain of a permutation group to be the collection
> of non-fixed points
To clarify, are you talking just about the case where a group it
constructed from a set of generators, or are you considering having
every construction figure out the set of fixed points and throw them
away? The former sounds fine, but I don't like the latter.
> --
> To post to this group, send an email to sage-...@googlegroups.com
> To unsubscribe from this group, send an email to sage-devel+...@googlegroups.com
> For more options, visit this group at http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
I'm +1 to a group object like this, but removing things from the top
level namespace is backwards incompatable and could break a lot of
code out there. As for classes vs. methods, one advantage of classes
is that sometimes certain methods can be simplified/optimized if you
know what specific group you have.
- Robert
What is wrong with using sage.misc.misc.deprecation?
> As for classes vs. methods, one advantage of classes is that sometimes
> certain methods can be simplified/optimized if you know what specific group
> you have.
I might be off on what you are trying to say, and I'm not fully pro
with gap but I believe depending class inheritance with group theory
is inherently too weak. Applicable methods installed into operations
that are dynamically chosen at runtime based on some fitness criteria
(what gap has) seems smarter than dynamic classes (operations chosen
by class hierarchy only). This applies specifically to group theory,
where there are many different ways to deal with groups, and some
properties are more important than others when dealing with different
functions.
http://www.gap-system.org/Manuals/doc/htm/tut/CHAP008.htm#SECT002
I might be a gap fan boy here, but having many attributes in a small
number of classes with many private functions that are called from
public ones seems more robust than an extremely large class hierarchy.
-bill
>>> I've brought this one up before. How do folks feel about having the
>>> named permutation groups available like graphs are? In other words,
>>> rather than each family of permutation groups being a new class,
>>> there
>>> is a single system-wide object ("groups", or "perm_groups") whose
>>> methods produce instances of permutation groups (or more generally,
>>> just groups). So for example,
>>>
>>> D=groups.DihedralGroup(7)
>>>
>>> would replace the above syntax. Advantages - namespace is less
>>> cluttered, and tab-completion (groups.<tab>) gives precise one-stop
>>> shopping for examples of specific groups.
>>
>> I'm +1 to a group object like this, but removing things from the
>> top level
>> namespace is backwards incompatable and could break a lot of code
>> out there.
>
> What is wrong with using sage.misc.misc.deprecation?
That doesn't prevent breaking people's code, just warns them about it.
Preserving backwards compatibility is hard enough as it is (especially
for people of upgrade infrequently, or if there are publications using
the old syntax) so I'm +1 to not adding new names to the global
namespace, but think there should be really good reasons before we go
an remove stuff.
>> As for classes vs. methods, one advantage of classes is that
>> sometimes
>> certain methods can be simplified/optimized if you know what
>> specific group
>> you have.
>
> I might be off on what you are trying to say, and I'm not fully pro
> with gap but I believe depending class inheritance with group theory
> is inherently too weak. Applicable methods installed into operations
> that are dynamically chosen at runtime based on some fitness criteria
> (what gap has) seems smarter than dynamic classes (operations chosen
> by class hierarchy only). This applies specifically to group theory,
> where there are many different ways to deal with groups, and some
> properties are more important than others when dealing with different
> functions.
>
> http://www.gap-system.org/Manuals/doc/htm/tut/CHAP008.htm#SECT002
>
> I might be a gap fan boy here, but having many attributes in a small
> number of classes with many private functions that are called from
> public ones seems more robust than an extremely large class hierarchy.
I'm not advocating an extremely large class hierarchy, just saying
that it may make sense in some cases to have actual classes (if only
to provide extremely quick fitness criteria tests, though some of that
could be done with attributes as well). I'll leave it to the experts,
like you, to actually design the system.
- Robert
I have two patches up on the combinat patch server which add domains
to permutation groups.
The first is http://combinat.sagemath.org/hgwebdir.cgi/patches/file/290251ce8ef7/permgroup_cleanup-mh.patch#l1
which is just some general cleanup stuff. This is independent of the
domains code.
The real patch is at
http://combinat.sagemath.org/hgwebdir.cgi/patches/file/290251ce8ef7/permgroup-domain.patch
. I still need to do a little more work in terms of the documentation
and testing things outside of groups/, combinat/, and graphs/, but it
should be pretty close to done. It also does somethings like make
lots of things actual subgroups so that they know about their domain.
Finally, all of the functionality from #8929 was added.
If people could try it out and see how the interface works for them,
that'd be great.
--Mike