Magma V2.20-8 Wed Oct 8 2014 21:27:51 on mathcompprd01 [Seed = 3383467207] Type ? for help. Type -D to quit. Loading startup file "/home/eobr007/.magma.startup" > load "code.m"; Loading "code.m" > // SetVerbose ("Classes", 1); > // SetVerbose ("RandomSchreier", 1); > // load "z.m"; > // SetEchoInput (true); > > // 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; > > // L list of reps; n degree; Scalar: add scalar > // decide if rep has regular orbit > ProcessReps := function (L, n: Scalar := true) > 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); > > "Input degree = ", Degree (G), " Defining field size = ", #F; > > // 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? > flag, H := IsOverSmallerField (G); > if flag then > G := H; > "Conjugated G to smaller field"; > "Degree = ", Degree (G), "New field size = ", #F; > 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; > end if; > "========================================"; > end for; > return true; > end function; > > n := 9; > G := Alt (n); > RandomSchreier (G); > order := #G; > Dims := [[8,20], [35]]; > Primes := [2, 5]; > > for i in [1..#Primes] do for> p := Primes[i]; dims := Dims[i]; for> "\n\nProcess n = ", n, "p = ", p; for> I := IrreducibleModules (G, GF (p): MaxDegree := Maximum (dims)); for> J := [x : x in I | Dimension (x) in dims]; for> L := [ActionGroup (j): j in J]; for> O := [LMGOrder (l): l in L]; for> L := [L[i]: i in [1..#L] | O[i] eq #G]; for> "Faithful reps over GF(", p, ") have dimensions:", [Degree (l): l in L], "\n"; for> f := ProcessReps (L, n); for> end for; Process n = 9 p = 2 Faithful reps over GF( 2 ) have dimensions: [ 8, 8, 8, 20, 20 ] Consider the following repn 1 Input degree = 8 Defining field size = 2 Composition Factors of G is G | Alternating(9) 1 Vector space too small -- no regular orbit ======================================== Consider the following repn 2 Input degree = 8 Defining field size = 2 Composition Factors of G is G | Alternating(9) 1 Vector space too small -- no regular orbit ======================================== Consider the following repn 3 Input degree = 8 Defining field size = 2 Composition Factors of G is G | Alternating(9) 1 Vector space too small -- no regular orbit ======================================== Consider the following repn 4 Input degree = 20 Defining field size = 2 Composition Factors of G is G | Alternating(9) 1 Refined bound on degree is 22 Order of G is 181440 ... #O is now 60480 ... #O is now 151200 ... #O is now 181440 ... #O is now 272160 ... #O is now 274428 ... #O is now 304668 ... #O is now 395388 ... #O is now 440748 ... #O is now 445788 ... #O is now 491148 ... #O is now 494928 ... #O is now 540288 ... #O is now 631008 ... #O is now 721728 ... #O is now 812448 ... #O is now 842688 ... #O is now 888048 Proved no regular orbit ======================================== Consider the following repn 5 Input degree = 20 Defining field size = 2 Composition Factors of G is G | Alternating(9) 1 Refined bound on degree is 22 Order of G is 181440 ... #O is now 45360 ... #O is now 75600 ... #O is now 166320 ... #O is now 257040 ... #O is now 302400 ... #O is now 312480 ... #O is now 403200 ... #O is now 448560 ... #O is now 471240 ... #O is now 561960 ... #O is now 622440 ... #O is now 713160 ... #O is now 743400 ... #O is now 834120 ... #O is now 864360 ... #O is now 909720 Proved no regular orbit ======================================== Process n = 9 p = 5 Faithful reps over GF( 5 ) have dimensions: [ 35, 35 ] Consider the following repn 1 Input degree = 35 Defining field size = 5 Composition Factors of G is G | Alternating(9) * | Cyclic(2) * | Cyclic(2) 1 Refined bound on degree is 24 Over refined degree limit -- so G has regular orbit ======================================== Consider the following repn 2 Input degree = 35 Defining field size = 5 Composition Factors of G is G | Alternating(9) * | Cyclic(2) * | Cyclic(2) 1 Refined bound on degree is 24 Over refined degree limit -- so G has regular orbit ======================================== Total time: 10.160 seconds, Total memory usage: 95.06MB