[sage-devel] Re: possible bug in permutation/quotient group?

2009-08-31 Thread Carlo Hamalainen

On Fri, Jul 31, 2009 at 6:47 PM, javiervengor...@gmail.com wrote:
 If that you want are the cosets you can get them simply using

 cosets = Set([Set([h*g for h in H]) for g in G])

 or if you want to get a representative of each coset you can then use

 reps = [x[0] for x in cosets]

This will force you to enumerate the elements of the group G, and
that's not always a quick thing to do (e.g. what if you're working in
the Alternating group on 10 points?).

Gap provides RightCosets, CanonicalRightCosetElement and
Representative for working with cosets efficiently:


G = gap.AlternatingGroup(4)
g = '(1,2,3)'
H = gap.Subgroup(G, [g])

rc = gap.RightCosets(G, H)

print Canonical representatives:

for x in gap.List(G):
print H + str(x) + :, gap.CanonicalRightCosetElement(H, x)
print

print Representatives:

for C in gap.List(rc):
print C, :, gap.Representative(C)


Canonical representatives:
H(): ()
H(1,2)(3,4): (2,4,3)
H(1,3)(2,4): (2,3,4)
H(1,4)(2,3): (1,2,4)
H(2,3,4): (2,3,4)
H(1,2,4): (1,2,4)
H(1,3,2): ()
H(1,4,3): (2,4,3)
H(2,4,3): (2,4,3)
H(1,2,3): ()
H(1,3,4): (1,2,4)
H(1,4,2): (2,3,4)

Representatives:
RightCoset(Group( [ (1,2,3) ] ),()) : ()
RightCoset(Group( [ (1,2,3) ] ),(1,2)(3,4)) : (1,2)(3,4)
RightCoset(Group( [ (1,2,3) ] ),(1,3)(2,4)) : (1,3)(2,4)
RightCoset(Group( [ (1,2,3) ] ),(1,4)(2,3)) : (1,4)(2,3)



-- 
Carlo Hamalainen
http://carlo-hamalainen.net

--~--~-~--~~~---~--~~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread David Joyner

Maybe I don't understand your question. It seems you are claiming that
if G is a permutation group and H is a normal subgroup then
the quotient G/H embeds into G. Are you sure that is true?


On Fri, Jul 31, 2009 at 11:36 AM, Robert Schwarzm...@rschwarz.net wrote:

 Hi all, I was just playing around with permutations, when something
 puzzled me:

 sage: G = SymmetricGroup(4)
 sage: H = G.normal_subgroups()[1]
 sage: H
 Permutation Group with generators [(1,3)(2,4), (1,4)(2,3)]
 sage: G.quotient_group(H)
 Permutation Group with generators [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)

 Where do the 5 and 6 suddenly come from? In my understanding the
 elements of the quotient group G/H are classes of elements of G, which
 operates on {1, 2, 3, 4}.

 Also, there is a method of G called quotient, which raises and
 NotImplementedError, which is a little confusing, given an
 implementation of the quotient group is actually available.

 Running Sage 4.1 on Arch Linux 64 bit.

 --
 Robert Schwarz m...@rschwarz.net

 Get my public key at http://rschwarz.net/key.asc

 


--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread Simon King

Hi David,

On Jul 31, 4:47 pm, David Joyner wdjoy...@gmail.com wrote:
 Maybe I don't understand your question. It seems you are claiming that
 if G is a permutation group and H is a normal subgroup then
 the quotient G/H embeds into G. Are you sure that is true?
 ...
  Where do the 5 and 6 suddenly come from? In my understanding the
  elements of the quotient group G/H are classes of elements of G, which
  operates on {1, 2, 3, 4}.

I understand the question like this: The elements of G/H are *sets* of
elements of G (namely cosets). One obvious way to represent a coset is
by picking one of its elements -- hence, an element of G. Then, it is
indeed surprising that higher numbers occur.

Aparently G.quotient_group(H) returns a permutation group that is
isomorphic to G/H. And then, it is of course not surprising that it
does not simply act on {1,2,3,4}.

But the following question arises:
Start with
sage: G = SymmetricGroup(4)
sage: H = G.normal_subgroups()[1]
sage: H
Permutation Group with generators [(1,3)(2,4), (1,4)(2,3)]
sage: X= G.quotient_group(H)

Given an element g of G, how can one find the element of X that
corresponds to the coset of g wrt. H ?
 sage: X(g)
would in general not work!

How can one construct the map from G to X that corresponds to taking
the quotient by H ?

Cheers,
   Simon

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread kcrisman



On Jul 31, 11:47 am, David Joyner wdjoy...@gmail.com wrote:
 Maybe I don't understand your question. It seems you are claiming that
 if G is a permutation group and H is a normal subgroup then
 the quotient G/H embeds into G. Are you sure that is true?



 On Fri, Jul 31, 2009 at 11:36 AM, Robert Schwarzm...@rschwarz.net wrote:

  Hi all, I was just playing around with permutations, when something
  puzzled me:

  sage: G = SymmetricGroup(4)
  sage: H = G.normal_subgroups()[1]
  sage: H
  Permutation Group with generators [(1,3)(2,4), (1,4)(2,3)]
  sage: G.quotient_group(H)
  Permutation Group with generators [(1,2)(3,6)(4,5), (1,3,5)(2,4,6)

Look at

sage: G.quotient_group??

It turns out that Sage asks GAP to create the image of the morphism G -
 G/H, as far as I can tell, and in so doing creates that image as a
separate (sub)permutation group.  In particular, it using
RegularActionHomomorphism to do this, and at
http://www.gap-system.org/Manuals/doc/htm/ref/CHAP039.htm#SSEC007.2 it
says returns an isomorphism from G onto the regular permutation
representation of G and certainly in this case G/H (the relevant
group) has six elements!

Though I agree that this could be confusing, the good part is that
this creates (an isomorphic) group without having to talk about which
element of the coset you pick each time.  It would be misleading to
say that (1234) was an element of G/H (which I think is what David was
getting at). There are ways to get cosets in GAP, of course (maybe
wrapped in Sage?) but I don't know much about them.

I hope this helps!

- kcrisman


  Where do the 5 and 6 suddenly come from? In my understanding the
  elements of the quotient group G/H are classes of elements of G, which
  operates on {1, 2, 3, 4}.

  Also, there is a method of G called quotient, which raises and
  NotImplementedError, which is a little confusing, given an
  implementation of the quotient group is actually available.

  Running Sage 4.1 on Arch Linux 64 bit.

  --
  Robert Schwarz m...@rschwarz.net

  Get my public key athttp://rschwarz.net/key.asc
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread Simon King

Hi!

On Jul 31, 5:11 pm, kcrisman kcris...@gmail.com wrote:
...
 Though I agree that this could be confusing, the good part is that
 this creates (an isomorphic) group without having to talk about which
 element of the coset you pick each time.  It would be misleading to
 say that (1234) was an element of G/H (which I think is what David was
 getting at). There are ways to get cosets in GAP, of course (maybe
 wrapped in Sage?) but I don't know much about them.

Yes, that is the point that I wanted to make. Is it wrapped in Sage?
Is there a method that associates to an element g of G an element in
G.quotient_group(H) corresponding to its coset?

Cheers,
   Simon
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread Robert Schwarz

javier wrote:
 On Jul 31, 4:47 pm, David Joyner wdjoy...@gmail.com wrote:
 Maybe I don't understand your question. It seems you are claiming
 thatif G is a permutation group and H is a normal subgroup then
 the quotient G/H embeds into G. Are you sure that is true?

 In general, no it isn't. We have the short exact sequence
 1 -- H -- G -- G/H --1
 to embed G/H into G we would need it to split, which would mean that
 the extension is trivial, or that G factorizes as a product of H and
 G/H.

OK, my fault, too much wishful thinking here.

kcrisman wrote:
 
 Look at
 
 sage: G.quotient_group??
 
 It turns out that Sage asks GAP to create the image of the morphism G -
 G/H, as far as I can tell, and in so doing creates that image as a
 separate (sub)permutation group.  In particular, it using
 RegularActionHomomorphism to do this, and at
 http://www.gap-system.org/Manuals/doc/htm/ref/CHAP039.htm#SSEC007.2 it
 says returns an isomorphism from G onto the regular permutation
 representation of G and certainly in this case G/H (the relevant
 group) has six elements!
 
 Though I agree that this could be confusing, the good part is that
 this creates (an isomorphic) group without having to talk about which
 element of the coset you pick each time.  It would be misleading to
 say that (1234) was an element of G/H (which I think is what David was
 getting at). There are ways to get cosets in GAP, of course (maybe
 wrapped in Sage?) but I don't know much about them.
 
 I hope this helps!
 

Yes, the cosets are, what I really want (although generators would be
very nice, too, if they exist, e.g. if the quotient is normal).

The application was the following: Suppose you have a linear equation
with multi-indexed variables, like x_1,2 + x_2,3 + x_3,1 == 0, which
also holds for all permutations of {1, 2, 3}, and I want to enumerate
all possible equations, but without duplicates. I hoped it was possible
to first compute the permutations under whose operation the exact same
equation result, then take the subgroup H generated by those and use
representants from the cosets of S_n/H to get all unique equations.
Looks like it's not that simple, since H doesn't even have to be normal,
in general.

Thanks a lot , though.

-- 
Robert Schwarz m...@rschwarz.net

Get my public key at http://rschwarz.net/key.asc

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread javier

If that you want are the cosets you can get them simply using

cosets = Set([Set([h*g for h in H]) for g in G])

or if you want to get a representative of each coset you can then use

reps = [x[0] for x in cosets]

this should work even if H is not normal, the only issue being that
the set of cosets is not a group. Not sure if it will help with your
problem, though.

Cheers
J.


On Jul 31, 5:27 pm, Robert Schwarz m...@rschwarz.net wrote:
 Yes, the cosets are, what I really want (although generators would be
 very nice, too, if they exist, e.g. if the quotient is normal).

 The application was the following: Suppose you have a linear equation
 with multi-indexed variables, like x_1,2 + x_2,3 + x_3,1 == 0, which
 also holds for all permutations of {1, 2, 3}, and I want to enumerate
 all possible equations, but without duplicates. I hoped it was possible
 to first compute the permutations under whose operation the exact same
 equation result, then take the subgroup H generated by those and use
 representants from the cosets of S_n/H to get all unique equations.
 Looks like it's not that simple, since H doesn't even have to be normal,
 in general.

 Thanks a lot , though.

 --
 Robert Schwarz m...@rschwarz.net

 Get my public key athttp://rschwarz.net/key.asc
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: possible bug in permutation/quotient group?

2009-07-31 Thread Robert Schwarz

javier wrote:
 If that you want are the cosets you can get them simply using
 
 cosets = Set([Set([h*g for h in H]) for g in G])
 
 or if you want to get a representative of each coset you can then use
 
 reps = [x[0] for x in cosets]
 
 this should work even if H is not normal, the only issue being that
 the set of cosets is not a group. Not sure if it will help with your
 problem, though.
 

Yes, I will use that, for now, although I was hoping to get a nice
representation of the set of cosets, in terms of generators.

Anyway, it looks like I wasn't expecting too much after all. On
http://en.wikipedia.org/wiki/Group_action or S. Lang: Algebra (p. 28)
I find exactly what I want, supposing a group G acts transitively on a
set X:

If G does not act faithfully on X, one can easily modify the group to
obtain a faithful action. If we define N = {g in G : g·x = x for all x
in X}, then N is a normal subgroup of G; indeed, it is the kernel of the
homomorphism G → Sym(X). The factor group G/N acts faithfully on X by
setting (gN)·x = g·x. The original action of G on X is faithful if and
only if N = {e}.

So what I need, computationally, is not a map from G - G/N, but more
the other way round. More explicitly I want a (nice, simple, concise)
description of X (= orbit of G) in terms of elements of G. The cosets
will do that, but not really simpler than X itself. Provided I come up
with something sufficiently general, there will be a patch with a new
feature :-)

Thanks, again

-- 
Robert Schwarz m...@rschwarz.net

Get my public key at http://rschwarz.net/key.asc

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---