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