[back] [prev] [next] [index] [root]

 


FindQuotientOfShapeEnumInit

Initializes an environment to enumerate certain subgroups

Syntax:

s := FindQuotientOfShapeEnumInit(G, L);

record
  s  
AbelianGroup
  G  
list
  L  
of integers describing the shape of the subgroup

See also:  FindQuotientOfShapeEnumNext

Description:

no detailed description available yet


Example:

Let G := C^2|8\times C|6^2\times C|2. We'll enumerate all quotients Q=G/U of G such that Qcong C|4\times C|2:

kash> G := AbelianGroupCreate(MatDiag(Z, [8, 8, 6, 6, 2]));
Group with relations:
[8 0 0 0 0]
[0 8 0 0 0]
[0 0 6 0 0]
[0 0 0 6 0]
[0 0 0 0 2]
kash> s := FindQuotientOfShapeEnumInit(G, [4, 2]);
Record of type FindQuotientOfShapeEnum

kash> while FindQuotientOfShapeEnumNext(s) and s.no <3 do
> Print("Number ", s.no, "\n", s.elt, "\n");
> l := AbelianQuotientGroup(G, AbelianSubGroup(G, s.elt));
> gs := AbelianGroupEnumInit(l);
> l := [];
> while AbelianGroupEnumNext(gs) do Add(l, gs.elt); od;
> Apply(l, x->AbelianGroupEltMove(x, G));
> Print("Containing: ", l, "\n");
> od;
Number 1
[2 0 4 0 1]
[6 0 1 0 0]
[2 4 4 3 0]
[0 2 0 4 0]
[4 0 2 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
Containing: [ [0 0 0 0 0], [6 7 0 5 0], [1 0 0 0 0], [7 7 0 5 0], 
  [2 0 0 0 0], [0 7 0 5 0], [3 0 0 0 0], [1 7 0 5 0] ]
Number 2
[0 0 0 0 1]
[6 0 1 0 0]
[2 4 4 3 0]
[0 2 0 4 0]
[4 0 2 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
Containing: [ [0 0 0 0 0], [6 7 0 5 0], [1 0 0 0 0], [7 7 0 5 0], 
  [2 0 0 0 0], [0 7 0 5 0], [3 0 0 0 0], [1 7 0 5 0] ]
kash> while FindQuotientOfShapeEnumNext(s) do
> i := 1;
> od;
kash> Print("Total: ", s.no, "\n");
> Total: 360


<- back[back] [prev] [next] [index] [root]