-
Notifications
You must be signed in to change notification settings - Fork 19
Recog An/Sn unknown degree: conder, holt #265
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
f381cc7
2aed139
dd14350
47c4b28
6a96a7a
2061336
229ad39
e3ac7e3
f34d735
10af7a6
852db78
f63fb5c
65dc977
af0aba4
6539468
18b7a18
7fb6ed2
6089439
adb2fce
458b1b1
2959e1a
01f39bf
0a3e5a9
a6d26f9
7f2e750
16bace0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
|
|
@@ -311,6 +311,8 @@ AddMethod(FindHomDbProjective, FindHomMethodsMatrix.ReducibleIso, 1200); | |||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.NotAbsolutelyIrred, 1100); | ||||
|
|
||||
| # AddMethod(FindHomDbProjective, FindHomMethodsGeneric.SnAnSmallUnknownDegree, 1075); | ||||
|
|
||||
|
Comment on lines
+314
to
+315
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This method does not seem to exist?
Suggested change
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, might be an artifact of some old code we wrote. You can safely delete this. |
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.ClassicalNatural, 1050); | ||||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.Subfield, 1000); | ||||
|
|
@@ -332,6 +334,8 @@ AddMethod(FindHomDbProjective, FindHomMethodsProjective.D247, 840); | |||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.AltSymBBByDegree, 810); | ||||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsGeneric.SnAnUnknownDegree, 805); | ||||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.TensorDecomposable, 800); | ||||
|
|
||||
| AddMethod(FindHomDbProjective, FindHomMethodsProjective.FindElmOfEvenNormal, 700); | ||||
|
|
||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,45 +1,64 @@ | ||
| #@local d, sets, SdOn2Sets, ri, success, x, slp, db | ||
| # | ||
| # HACK to insert the method | ||
| gap> AddMethod(FindHomDbPerm, FindHomMethodsGeneric.SnAnUnknownDegree, 58);; | ||
| gap> AddMethod(FindHomDbMatrix, FindHomMethodsGeneric.SnAnUnknownDegree, 1070);; | ||
| gap> AddMethod(FindHomDbProjective, FindHomMethodsGeneric.SnAnUnknownDegree, 1220);; | ||
| # For each entry (d, k) we construct Sym(d)/Alt(d) acting on k-sets. | ||
| # For each entry (d, k), we must have 2 * k ^ 2 > d, | ||
| # otherwise LargeBasePrimitive recognises the group instead of SnAnUnknownDegree. | ||
| gap> dataPerm := [[5, 2], [7, 2], [8, 3], [9, 3], [10, 3], [11, 3], [12, 3], [13, 3]];; | ||
|
|
||
| # FindHomMethodsGeneric.SnAnUnknownDegree | ||
| # Sn | ||
| gap> for d in [11] do | ||
| > sets := Combinations([1 .. d], 2);; | ||
| > SdOn2Sets := Action(SymmetricGroup(d), sets, OnSets);; | ||
| > ri := RecogNode(SdOn2Sets);; | ||
| > success := FindHomMethodsGeneric.SnAnUnknownDegree(ri, SdOn2Sets); | ||
| > if not success or not Size(ri) = Factorial(d) then | ||
| > Print("wrong result! degree ", d, "\n"); | ||
| > fi; | ||
| > od; | ||
| # | ||
| # PermGroup action on k-sets | ||
| gap> PermOnKSets := function(G, k) | ||
| > local sets; | ||
| > sets := Combinations([1 .. NrMovedPoints(G)], k);; | ||
| > return Action(G, sets, OnSets);; | ||
| > end;; | ||
| gap> AltOnKSets := function(d, k) | ||
| > return PermOnKSets(AlternatingGroup(d), k); | ||
| > end;; | ||
| gap> SymOnKSets := function(d, k) | ||
| > return PermOnKSets(SymmetricGroup(d), k); | ||
| > end;; | ||
|
|
||
| # An | ||
| gap> for d in [11] do | ||
| > sets := Combinations([1 .. d], 2);; | ||
| > SdOn2Sets := Action(AlternatingGroup(d), sets, OnSets);; | ||
| > ri := RecogNode(SdOn2Sets);; | ||
| > success := FindHomMethodsGeneric.SnAnUnknownDegree(ri, SdOn2Sets); | ||
| > if not success or not Size(ri) = Factorial(d)/2 then | ||
| > Print("wrong result! degree ", d, "\n"); | ||
| > fi; | ||
| > od; | ||
| # | ||
| gap> altPermGroups := List(dataPerm, entry -> AltOnKSets(entry[1], entry[2]));; | ||
| gap> symPermGroups := List(dataPerm, entry -> SymOnKSets(entry[1], entry[2]));; | ||
|
|
||
| # | ||
| gap> dataMat := [[5, 4], [7, 3], [8, 5], [11, 7]];; | ||
|
|
||
| # Check Slp function | ||
| gap> ri := RecogNode(SdOn2Sets);; | ||
| gap> FindHomMethodsGeneric.SnAnUnknownDegree(ri, SdOn2Sets); | ||
| true | ||
| gap> x := PseudoRandom(Grp(ri));; | ||
| gap> slp := SLPforElement(ri, x);; | ||
| gap> x = ResultOfStraightLineProgram(slp, NiceGens(ri)); | ||
| true | ||
| # | ||
| # Permutation Matrix Group | ||
| gap> PermMatGroup := function(G, q) return Group(List( | ||
| > GeneratorsOfGroup(G), | ||
| > x -> ImmutableMatrix(q, PermutationMat(x, NrMovedPoints(G), GF(q))) | ||
| > )); end;; | ||
| gap> AltMatGroup := function(n, q) return PermMatGroup(AlternatingGroup(n), q); | ||
| > end;; | ||
| gap> SymMatGroup := function(n, q) return PermMatGroup(SymmetricGroup(n), q); | ||
| > end;; | ||
|
|
||
| # | ||
| gap> altMatGroups := List(dataMat, entry -> AltMatGroup(entry[1], entry[2]));; | ||
| gap> symMatGroups := List(dataMat, entry -> SymMatGroup(entry[1], entry[2]));; | ||
|
|
||
| # | ||
| # Remove Hacky injection of our method | ||
| gap> for db in [FindHomDbPerm, FindHomDbMatrix, FindHomDbProjective] do | ||
| > Remove(db, | ||
| > PositionProperty(db, x -> Stamp(x.method) = "SnAnUnknownDegree"));; | ||
| gap> nonAltOrSymGroups := [ | ||
| > PSL(3, 5), | ||
| > SL(3, 5), | ||
| > Omega(1, 4, 3), | ||
| > ];; | ||
|
|
||
| # Test | ||
| gap> for i in [1 .. Length(dataPerm)] do | ||
| > RECOG.TestGroup(altPermGroups[i], false, Factorial(dataPerm[i, 1])/2, rec()); | ||
| > RECOG.TestGroup(symPermGroups[i], false, Factorial(dataPerm[i, 1]), rec()); | ||
| > od; | ||
| gap> for i in [1 .. Length(dataMat)] do | ||
| > RECOG.TestGroup(altMatGroups[i], false, Factorial(dataMat[i, 1])/2, rec()); | ||
| > RECOG.TestGroup(symMatGroups[i], false, Factorial(dataMat[i, 1]), rec()); | ||
| > od; | ||
| gap> for i in [1 .. Length(nonAltOrSymGroups)] do | ||
| > ri := RecogNode(nonAltOrSymGroups[i]); | ||
| > if FindHomMethodsGeneric.SnAnUnknownDegree(ri, Grp(ri)) = Success then | ||
| > Print("ERROR: Recognised group [", i, "] wrongly as Sn/An!\n"); | ||
| > fi; | ||
| > od; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| # RECOG.IsFixedPoint | ||
| gap> ri := RecogNode(SymmetricGroup(10));; | ||
| gap> g := (1,2,3,4,5,6,7,8);; | ||
| gap> c := (1,2,3);; | ||
| gap> r := (1,2)(4,5,6);; | ||
| gap> RECOG.IsFixedPoint(ri, g,c,r); | ||
| true | ||
| gap> r := (2,3,4);; | ||
| gap> RECOG.IsFixedPoint(ri, g,c,r); | ||
| false | ||
|
|
||
| # RECOG.AdjustCycle | ||
| gap> ri := RecogNode(SymmetricGroup(10));; | ||
| gap> g := (1,2,3,4,5,6,7,8);; | ||
| gap> c := (1,2,3);; | ||
| gap> r := (4,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5) | ||
| gap> r := (3,4,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,4,5) | ||
| gap> r := (2,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5) | ||
| gap> r := (2,4,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5,4) | ||
| gap> r := (2,3,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,4,5) | ||
| gap> r := (1,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5) | ||
| gap> r := (1,4,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5,4) | ||
| gap> r := (1,3,4,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,6,4,5) | ||
| gap> r := (1,2,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5,4) | ||
| gap> r := (1,2,3,5);; | ||
| gap> RECOG.AdjustCycle(ri, g, c, r, 8); | ||
| (3,5,4,6) | ||
|
|
||
| # RECOG.BuildCycle | ||
| gap> ri := RecogNode(SymmetricGroup(10));; | ||
|
|
||
| # c = (u,v,w) | ||
| gap> c := (1,2,3);; | ||
|
|
||
| # Form 1: x = (v,a_1,...,a_alpha) * (w,b_1,....,b_beta) * (...) | ||
| # alpha - beta = 0 | ||
| gap> x := (2,4,5,6)* (3,7,8,9);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = -1 | ||
| gap> x := (2,4,5,6)* (3,7,8,9,10);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = 1 | ||
| gap> x := (2,4,5,6,10)* (3,7,8,9);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = -2 | ||
| gap> x := (2,4,5) * (3,7,8,9,10);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,10,9), 9 ] | ||
|
|
||
| # alpha - beta = 2 | ||
| gap> x := (2,4,5,6,10) * (3,7,8);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,10), 9 ] | ||
|
|
||
| # Form 2: x = (v,a_1,...,a_alpha,w,b_1,....,b_beta) * (...) | ||
| # alpha - beta = 0 | ||
| gap> x := (2,4,5,6,3,7,8,9);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = -1 | ||
| gap> x := (2,4,5,6,3,7,8,9,10);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = 1 | ||
| gap> x := (2,4,5,6,10,3,7,8,9);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,9), 9 ] | ||
|
|
||
| # alpha - beta = -2 | ||
| gap> x := (2,4,5,3,7,8,9,10);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,10,9), 9 ] | ||
|
|
||
| # alpha - beta = 2 | ||
| gap> x := (2,4,5,6,10,3,7,8);; | ||
| gap> RECOG.BuildCycle(ri, c, x, 10); | ||
| [ (1,2,3,4,7,5,8,6,10), 9 ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this be filled in by someone? At which university was this thesis written; what kind of thesis was it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I talked to @aniemeyer and learned that this was a thesis in Auckland, but I didn't find something initially. But now it seems this was indeed a B.Sc. thesis there, and it was written by @jonathan-conder . I have now pinged them, and will also write an email. Perhaps we get permissions to post the thesis somewhere, or perhaps Jonathan is willing to put it on e.g. the arXiv (I am not sure if they accept such things, but it seems to contain original research, and they definitely have at least phd theses?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Jonathan replied to my email and generously gave permission to share copies of his thesis, and he also made it available at https://jonathan-conder.github.io/afpg.pdf -- this should keep working for the foreseeable future, and I also made sure archive.org has a snapshot. Still, we should probably see if we can also get this onto e.g. Zenodo or so.
Anyway, that gives us enough info to complete this bib record. I'll do so eventually (if nobody beats me to it).