mehnert on Mon, 11 Sep 2006 12:27:28 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: cosets


Thank you,

that is exactly what i wanted.

regards,
Bernd

Quoting Bill Allombert <allomber@math.u-bordeaux.fr>:

> On Fri, Sep 08, 2006 at 11:40:50AM +0200, mehnert@math.uni-sb.de wrote:
> >
> >
> > Hello,
> >
> > if i'm interested for example in representants of the cosets of the
> subgroup
> > generated by G[4][1] in F.group, where
> >
> > ? F = galoisinit(polcyclo(28));
> > ? G = galoissubgroups(F); ,
> >
> > is there a comfortable way to do this in GP and if not: If
>
> Not really, though it is possible to do it through the use of libpari
> functions:
>
> ? install(group_quotient,GG);
> ? F = galoisinit(polcyclo(28));
> ? G = galoissubgroups(F);
> ? group_quotient(G[1],G[4])[1]
> %3 = [Vecsmall([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), Vecsmall([2, 5, 12,
> 3, 6, 9, 4, 7, 10, 1, 8, 11]), Vecsmall([3, 12, 9, 6, 11, 8, 5, 2, 7, 4, 1,
> 10]),
> Vecsmall([4, 3, 6, 5, 12, 11, 2, 1, 8, 7, 10, 9]), Vecsmall([5, 6, 11, 12, 9,
> 10, 3, 4, 1, 2, 7, 8]), Vecsmall([7, 4, 5, 2, 3, 12, 1, 10, 11, 8, 9, 6])]
>
> Some explanations:
>
> install(group_quotient,GG) will install the libpari function group_quotient
> inside GP.
>
> This function take two arguments which are "groups", are returned by
> galoissubgroups. G[1] is the underlying group of F. G[4] is the subgroup
> generated by G[4][1].
>
> It returns a two-component vector [C,M] where C is the cosets generators and
> M is a table that map the permutations to their cosets.
>
> > i want to export my data (with "galoisexport") and do the computation in
> GAP,
> > how do i get the results back to GP, so that my program can go further?
>
> If you prefer using GAP instead of the arcane libpari functions, you
> can proceed as follow
>
> Under GP do:
> ? galoisexport(G[1])
> %4 = "Group((1, 6)(2, 9)(3, 8)(4, 11)(5, 10)(7, 12), (1, 2, 5, 6, 9, 10)(3,
> 12,
> 11, 8, 7, 4), (1, 3, 9, 7, 5, 11)(2, 12, 10, 4, 6, 8))"
> ? galoisexport(G[4])
> %5 = "Group((1, 6)(2, 9)(3, 8)(4, 11)(5, 10)(7, 12))"
>
> Under gap:
>
> gap> F:=Group((1, 6)(2, 9)(3, 8)(4, 11)(5, 10)(7, 12), (1, 2, 5, 6, 9, 10)(3,
> $
> > 11, 8, 7, 4), (1, 3, 9, 7, 5, 11)(2, 12, 10, 4, 6, 8));
> Group([ (1,6)(2,9)(3,8)(4,11)(5,10)(7,12), (1,2,5,6,9,10)(3,12,11,8,7,4),
>   (1,3,9,7,5,11)(2,12,10,4,6,8) ])
> gap> H:=Group((1, 6)(2, 9)(3, 8)(4, 11)(5, 10)(7, 12));
> Group([ (1,6)(2,9)(3,8)(4,11)(5,10)(7,12) ])
> gap> L:=List(RightCosets(F,H),x->Permuted([1..12],Representative(x)));
> [ [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],
>   [ 5, 6, 11, 12, 9, 10, 3, 4, 1, 2, 7, 8 ],
>   [ 9, 10, 7, 8, 1, 2, 11, 12, 5, 6, 3, 4 ],
>   [ 3, 12, 9, 6, 11, 8, 5, 2, 7, 4, 1, 10 ],
>   [ 11, 8, 1, 10, 7, 4, 9, 6, 3, 12, 5, 2 ],
>   [ 7, 4, 5, 2, 3, 12, 1, 10, 11, 8, 9, 6 ] ]
>
> which is valid in GP format (due to Permuted([1..12],...).
>
> You can also export groups wholesale using the GAP functions below:
>
> PermToGP := function(p,l)
>  return Permuted([1..l],p);
> end;
> ExportGroup := function(G)
>   local as,perms, gens,l, ords,pcgs;
>   as := AsList(G);
>   l := Size(G);
>   pcgs := SpecialPcgs(G);
>   gens := List(pcgs);
>   perms := List(gens, x -> PermToGP(Permutation(x,as,OnRight), l));
>   ords := RelativeOrders(pcgs);
>   return [Reversed(perms),Reversed(ords)];
> end;
>
> gap> ExportGroup(F/H);
> [ [ [ 5, 6, 1, 2, 3, 4 ], [ 6, 3, 2, 5, 4, 1 ] ], [ 3, 2 ] ]
>
> Cheers,
> Bill.
>




----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.