Magma V2.20-8 Wed Dec 17 2014 23:19:08 on mathcompprd01 [Seed = 1722225116]
Type ? for help. Type -D to quit.
>
> load "code.m";
Loading "code.m"
> // SetVerbose ("Classes", 1);
> // SetVerbose ("RandomSchreier", 1);
> // load "z.m";
> // SetEchoInput (true);
>
> load "sign.m";
Loading "sign.m"
> // second cover of G
> SecondCover := function (G)
> M:=GModule (G);
> D := LMGDerivedGroup (G);
> F := BaseRing (G);
> sign := [GL(1, F) | ];
> for i in [1..Ngens (G)] do
> if LMGIsIn (D, G.i) then
> sign[i] := [1];
> else
> sign[i] := [-1];
> end if;
> end for;
> K:=[KroneckerProduct (G.i, sign[i]): i in [1..Ngens (G)]];
> H:= sub;
> N:=GModule (H);
> LMGCompositionFactors (H);
> assert IsIsomorphic (M, N) eq false;
> return H;
> end function;
>
>
> // is vector space large enough?
> CanHaveRegularOrbit := function (G)
> d := Degree (G);
> F := BaseRing (G);
> V := VectorSpace (F, d);
> o := #G;
> if #V lt #G then "Vector space too small -- no regular orbit";
> return false, true;
> else
> return true, true;
> end if;
> end function;
>
> // determine if G has regular orbit by covering vector space
> HasRegularOrbit := function (G: Limit := 1000)
> d := Degree (G);
> F := BaseRing (G);
> V := VectorSpace (F, d);
> o := #G;
> if #V lt #G then "Vector space too small -- no regular orbit";
> return false, true;
> end if;
>
> O := {};
> nmr := 0;
> "Order of G is ", #G;
> repeat
> repeat
> v := Random (V);
> until not (v in O);
> o := Orbit (G, v);
> if #o eq #G then "Found regular orbit"; return true, true; end if;
> O join:= o;
> "... #O is now ", #O;
> nmr +:= 1;
> decided := #V - #O lt #G;
> until decided or nmr gt Limit;
> if decided then
> "Proved no regular orbit"; return false, true;
> end if;
> if nmr gt Limit then
> "Could not decide about regular orbit"; return false, false;
> end if;
> end function;
>
> /* find space centralised by g */
> CentralisedSpace := function (g)
> G := Parent (g);
> F := CoefficientRing (G);
> A := MatrixAlgebra (F, Degree (G));
> a := A!g;
> N := NullSpace (a - Identity (A));
> // "Nullspace has dimension ", Dimension (N);
> return N;
> end function;
>
> RefinedBound := function (G, n)
> C := LMGClasses (G);
> order := #G;
> index := [i : i in [1..#C] | IsPrime (C[i][1]) and order mod C[i][1] eq 0];
> reps := [C[i][3]: i in index];
> sizes := [C[i][2]: i in index];
> spaces := [#CentralisedSpace (reps[i]) : i in [1..#reps]];
> size := &+[sizes[i] * spaces[i]: i in [1..#spaces]];
> p := Characteristic (BaseRing (G));
> e := Ilog (p, size);
> assert p^(e + 1) ge size;
> if p^e eq size then return e; else return e + 1; end if;
> end function;
>
> Scalars := function (d, q)
> F := GF (q);
> nu := PrimitiveElement (F);
> M := MatrixAlgebra (F, d);
> s := ScalarMatrix (M, nu);
> return sub;
> end function;
>
> // H defined over GF(q); construct G = H \circ scalars of F_q
> AddScalar := function (H)
> F := BaseRing (H);
> if #F gt 2 then
> S := Scalars (Degree (H), #F);
> G := sub;
> return G;
> else
> return H;
> end if;
> end function;
>
> AddScalars := function (H)
> F := BaseRing (H);
> if #F gt 2 then
> S := Scalars (Degree (H), #F);
> K := sub;
> S := Subgroups (K);
> S := [s`subgroup: s in S];
> L := {sub: s in S};
> L := [x : x in L];
> O := [#x: x in L];
> ParallelSort (~O, ~L);
> Reverse (~L);
> return L;
> else
> return [H];
> end if;
>
> end function;
>
>
> // L list of reps; n degree; Scalar: add scalar
> // decide if rep has regular orbit
> ProcessReps := function (L, n: Scalar := true)
> if #L eq 0 then return true; end if;
>
> for i in [1..#L] do
> "Consider the following repn", i;
> H := L[i];
> G := Scalar select AddScalar (H) else H;
>
> F := BaseRing (G);
> p := Characteristic (F);
> assert #F eq p;
>
> "Input degree = ", Degree (G), " Defining field size = ", #F;
> "Order of generators ", [Order (G.i): i in [1..Ngens (G)]];
>
> // replace by absolute representation
> if not IsPrime (#F) and not IsAbsolutelyIrreducible (G) then
> G := AbsoluteRepresentation (G);
> "Replaced G by its absolute representation";
> "New degree = ", Degree (G), "New field size = ", #F;
> end if;
>
> // is G conjugate to group defined over smaller field?
> if not IsPrime (#F) then
> flag, H := IsOverSmallerField (G);
> if flag then
> G := H;
> "Conjugated G to smaller field";
> "Degree = ", Degree (G), "New field size = ", #F;
> end if;
> end if;
>
> if not IsPrime (#F) then
> G := WriteOverSmallerField (G, GF(p));
> "Rewrite G over prime field -- now degree = ", Degree (G);
> end if;
>
> o := LMGOrder (G);
> "Composition Factors of G is ";
> LMGCompositionFactors (G);
>
> if CanHaveRegularOrbit (G) then
> e := RefinedBound (G, n);
> "Refined bound on degree is ", e;
> if Degree (G) gt e then
> "Over refined degree limit -- so G has regular orbit";
> regular := true;
> else
> regular := HasRegularOrbit (G);
> // "Has regular orbit?", regular;
> end if;
> else
> regular := false;
> end if;
> "========================================";
> end for;
> return regular;
> end function;
>
> AddScalars_Alt := function (H)
function> F := BaseRing (H);
function> Z := LMGCentre (H);
function> if #F gt 2 then
function|if> S := Scalars (Degree (H), #F);
function|if> K := sub;
function|if> S := Subgroups (K);
function|if> S := [s`subgroup: s in S];
function|if> S := [s: s in S | not (s subset Z)];
function|if> if #S gt 1 then
function|if|if> O := [#x: x in S];
function|if|if> ParallelSort (~O, ~S);
function|if|if> Reverse (~S);
function|if|if> end if;
function|if> Append (~S, sub);
function|if> L := [sub: s in S];
function|if> return L;
function|if> else
function|if> return [H];
function|if> end if;
function>
function> end function;
>
> n:=8;
> G := eval Read ("a8-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 8 Defining field size = 3
Order of generators [ 14, 15, 4, 2 ]
Composition Factors of G is
G
| Alternating(8)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
>
> G := eval Read ("a8-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 8 Defining field size = 5
Order of generators [ 30, 4, 6, 4, 2 ]
Composition Factors of G is
G
| Alternating(8)
*
| Cyclic(2)
*
| Cyclic(2)
1
Refined bound on degree is 9
Order of G is 80640
... #O is now 8064
... #O is now 11904
... #O is now 25344
Found regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 9;
> G := eval Read ("a9-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 8 Defining field size = 3
Order of generators [ 20, 18, 9, 2 ]
Composition Factors of G is
G
| Alternating(9)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
>
> G := eval Read ("a9-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 8 Defining field size = 5
Order of generators [ 8, 20, 24, 4, 2 ]
Composition Factors of G is
G
| Alternating(9)
*
| Cyclic(2)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
2An with all scalars does not act regularly so now proper subgroups >= 2An
Consider the following repn 1
Input degree = 8 Defining field size = 5
Order of generators [ 8, 20, 24 ]
Composition Factors of G is
G
| Alternating(9)
*
| Cyclic(2)
1
Refined bound on degree is 10
Order of G is 362880
... #O is now 15120
... #O is now 33264
Proved no regular orbit
========================================
>
> G := eval Read ("a9-p7");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 8 Defining field size = 7
Order of generators [ 7, 30, 4, 6, 3 ]
Composition Factors of G is
G
| Alternating(9)
*
| Cyclic(3)
*
| Cyclic(2)
1
Refined bound on degree is 9
Order of G is 1088640
... #O is now 181440
... #O is now 362880
... #O is now 544320
... #O is now 1088640
Found regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 10;
> G := eval Read ("a10-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 16 Defining field size = 3
Order of generators [ 18, 18, 15, 2 ]
Composition Factors of G is
G
| Alternating(10)
*
| Cyclic(2)
1
Refined bound on degree is 18
Order of G is 3628800
... #O is now 302400
... #O is now 2116800
... #O is now 3931200
... #O is now 5745600
... #O is now 7560000
... #O is now 7862400
... #O is now 9676800
... #O is now 11491200
... #O is now 12700800
... #O is now 14515200
... #O is now 15724800
... #O is now 16934400
... #O is now 18748800
... #O is now 20563200
... #O is now 21772800
... #O is now 23587200
... #O is now 25401600
... #O is now 26611200
... #O is now 26668800
... #O is now 27878400
... #O is now 29692800
... #O is now 29995200
... #O is now 30600000
... #O is now 30686400
... #O is now 31291200
... #O is now 32500800
... #O is now 33105600
... #O is now 34315200
... #O is now 34920000
... #O is now 36734400
... #O is now 37944000
... #O is now 38246400
... #O is now 38427840
... #O is now 39032640
... #O is now 39183840
... #O is now 39335040
... #O is now 39536640
Proved no regular orbit
========================================
>
> G := eval Read ("a10-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 8 Defining field size = 5
Order of generators [ 18, 8, 21, 4, 2 ]
Composition Factors of G is
G
| Alternating(10)
*
| Cyclic(2)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
2An with all scalars does not act regularly so now proper subgroups >= 2An
Consider the following repn 1
Input degree = 8 Defining field size = 5
Order of generators [ 18, 8, 21 ]
Composition Factors of G is
G
| Alternating(10)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
>
> G := eval Read ("a10-p5-d48");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 48 Defining field size = 5
Order of generators [ 18, 8, 21, 4, 2 ]
Composition Factors of G is
G
| Alternating(10)
*
| Cyclic(2)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 30
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 11;
> G := eval Read ("a11-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 16 Defining field size = 3
Order of generators [ 11, 9, 8, 2 ]
Composition Factors of G is
G
| Alternating(11)
*
| Cyclic(2)
1
Refined bound on degree is 19
Order of G is 39916800
... #O is now 6652800
Proved no regular orbit
========================================
>
> G := eval Read ("a11-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 16 Defining field size = 5
Order of generators [ 18, 6, 11, 4, 2 ]
Composition Factors of G is
G
| Alternating(11)
*
| Cyclic(2)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 15
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> G := eval Read ("a11-p5-d56");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 56 Defining field size = 5
Order of generators [ 18, 6, 11, 4, 2 ]
Composition Factors of G is
G
| Alternating(11)
*
| Cyclic(2)
*
| Cyclic(2)
1
Refined bound on degree is 35
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 12;
> G := eval Read ("a12-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 16 Defining field size = 3
Order of generators [ 40, 22, 20, 2 ]
Composition Factors of G is
G
| Alternating(12)
*
| Cyclic(2)
1
Vector space too small -- no regular orbit
========================================
>
> n := 13;
> G := eval Read ("a13-p3");
> f := ProcessReps ([G], n);
Consider the following repn 1
Input degree = 32 Defining field size = 3
Order of generators [ 28, 8, 8, 2 ]
Composition Factors of G is
G
| Alternating(13)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 28
Over refined degree limit -- so G has regular orbit
========================================
>
> G := eval Read ("a13-p13");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 32 Defining field size = 13
Order of generators [ 24, 13, 8, 12, 6, 3 ]
Composition Factors of G is
G
| Cyclic(3)
*
| Cyclic(2)
*
| Alternating(13)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 22
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 14;
> G := eval Read ("a14-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 64 Defining field size = 5
Order of generators [ 24, 24, 24, 4, 2 ]
Composition Factors of G is
G
| Cyclic(2)
*
| Alternating(14)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 42
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> G := eval Read ("a14-p13");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 64 Defining field size = 13
Order of generators [ 36, 24, 24, 12, 6, 3 ]
Composition Factors of G is
G
| Cyclic(3)
*
| Cyclic(2)
*
| Alternating(14)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 38
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 15;
> G := eval Read ("a15-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 64 Defining field size = 5
Order of generators [ 66, 8, 20, 4, 2 ]
Composition Factors of G is
G
| Cyclic(2)
*
| Alternating(15)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 43
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 16;
> G := eval Read ("a16-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 128 Defining field size = 5
Order of generators [ 14, 14, 9, 4, 2 ]
Composition Factors of G is
G
| Cyclic(2)
*
| Alternating(16)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 75
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> n := 20;
> G := eval Read ("a20-p5");
> L := AddScalars_Alt (G);
> regular := ProcessReps ([L[1]], n: Scalar := false);
Consider the following repn 1
Input degree = 256 Defining field size = 5
Order of generators [ 30, 40, 12, 4, 2 ]
Composition Factors of G is
G
| Alternating(20)
*
| Cyclic(2)
*
| Cyclic(2)
1
#Warning: we will need to find a perm rep of the radical quotient!
#Found perm rep of the radical quotient!
Refined bound on degree is 143
Over refined degree limit -- so G has regular orbit
========================================
> if not regular then
if> "2An with all scalars does not act regularly so now proper subgroups >=
2An";
if> M := [L[i]: i in [2..#L]];
if> f := ProcessReps (M, n: Scalar := false);
if> end if;
>
> Kappa := function (n, p)
function> return n mod p eq 0 select 1 else 0;
function> end function;
>
> DimSpinAn := function (n, p)
function> m := (n - 2 - Kappa (n, p)) div 2;
function> return 2^m;
function> end function;
>
> n := 15; p := 11;
> m := DimSpinAn (n, p);
> G := eval Read ("a15-p11");
> assert Degree (G) eq m;
> "Dimension and base ring of G are", Dimension (G), BaseRing (G);
Dimension and base ring of G are 64 Finite field of size 11^2
> f := IsOverSmallerField (G);
> "Write over smaller field? ", f;
Write over smaller field? false
>
> n := 15; p := 13;
> m := DimSpinAn (n, p);
> G := eval Read ("a15-p13");
> assert Degree (G) eq m;
> "Dimension and base ring of G are", Dimension (G), BaseRing (G);
Dimension and base ring of G are 64 Finite field of size 13^2
> f := IsOverSmallerField (G);
> "Write over smaller field? ", f;
Write over smaller field? false
>
> n := 17; p := 7;
> m := DimSpinAn (n, p);
> G := eval Read ("a17-p7");
> assert Degree (G) eq m;
> "Dimension and base ring of G are", Dimension (G), BaseRing (G);
Dimension and base ring of G are 128 Finite field of size 7^2
> f := IsOverSmallerField (G);
> "Write over smaller field? ", f;
Write over smaller field? false
>
> n := 19; p := 3;
> m := DimSpinAn (n, p);
> G := eval Read ("a19-p3");
> assert Degree (G) eq m;
> "Dimension and base ring of G are", Dimension (G), BaseRing (G);
Dimension and base ring of G are 256 Finite field of size 3^2
> f := IsOverSmallerField (G);
> "Write over smaller field? ", f;
Write over smaller field? false
>
> G := eval Read ("minus-cover-s13-11");
> "Repn of 2Sn ", Degree (G), BaseRing (G);
Repn of 2Sn 64 Finite field of size 11
> D := DerivedGroupMonteCarlo (G);
> D := sub;
> LMGCompositionFactors (D);
G
| Alternating(13)
*
| Cyclic(2)
1
> "2An irreducible? ", IsIrreducible (D);
2An irreducible? true
>
> G := eval Read ("minus-cover-s14-11");
> "Repn of 2Sn ", Degree (G), BaseRing (G);
Repn of 2Sn 64 Finite field of size 11
> D := DerivedGroupMonteCarlo (G);
> D := sub;
> LMGCompositionFactors (D);
G
| Alternating(14)
*
| Cyclic(2)
1
> "2An irreducible? ", IsIrreducible (D);
2An irreducible? true
>
Total time: 2264.820 seconds, Total memory usage: 3802.44MB