1############################################################################# 2## 3## genss.gd genss package 4## Max Neunhoeffer 5## Felix Noeske 6## 7## Copyright 2006 Lehrstuhl D für Mathematik, RWTH Aachen 8## 9## Declaration stuff for generic Schreier-Sims 10## 11############################################################################# 12 13############################################################################# 14# Our Info class: 15############################################################################# 16 17DeclareInfoClass( "InfoGenSS" ); 18SetInfoLevel(InfoGenSS,1); 19 20############################################################################# 21# The following global record contains default values for options for the 22# main function "StabilizerChain": 23############################################################################# 24 25DeclareGlobalVariable( "GENSS" ); 26InstallValue(GENSS,rec()); 27 28 29############################################################################# 30# Our main type: 31############################################################################# 32 33BindGlobal( "StabilizerChainFamily", NewFamily( "StabilizerChainFamily" ) ); 34DeclareCategory( "IsStabilizerChain", IsComponentObjectRep ); 35DeclareRepresentation( "IsStabilizerChainByOrb", IsStabilizerChain, 36 [ "size", # false or a size if known 37 "orb", # the orbit 38 "cand", # a record for base point candidates (shared between layers) 39 "stab", # the next layer 40 "base", # the global list of base points (shared between layers) 41 "layer", # the layer, 1 is top 42 "opt", # the options record (shared between layers) 43 ] ); 44BindGlobal( "StabChainByOrbType", 45 NewType(StabilizerChainFamily,IsStabilizerChain and IsStabilizerChainByOrb)); 46 47 48############################################################################# 49# A few helper functions needed elsewhere: 50############################################################################# 51 52DeclareGlobalFunction( "GENSS_CopyDefaultOptions" ); 53DeclareGlobalFunction( "GENSS_MapBaseImage" ); 54DeclareGlobalFunction( "GENSS_FindVectorsWithShortOrbit" ); 55DeclareGlobalFunction( "GENSS_FindShortOrbit" ); 56DeclareGlobalFunction( "GENSS_IsOneProjective" ); 57DeclareGlobalFunction( "GENSS_RandomElementFromAbove" ); 58DeclareGlobalFunction( "GENSS_OpFunctionMaker" ); 59 60############################################################################# 61# Now to the heart of the method, the Schreier-Sims: 62############################################################################# 63 64DeclareOperation( "FindBasePointCandidates", 65 [ IsGroup, IsRecord, IsInt, IsObject ] ); 66DeclareGlobalFunction( "GENSS_NextBasePoint" ); 67DeclareGlobalFunction( "GENSS_CreateStabChainRecord" ); 68DeclareGlobalFunction( "GENSS_StabilizerChainInner" ); 69DeclareGlobalFunction( "GENSS_DeriveCandidatesFromStabChain" ); 70DeclareGlobalFunction( "GENSS_TrivialOp" ); 71DeclareOperation( "StabilizerChain", [ IsGroup ] ); 72DeclareOperation( "StabilizerChain", [ IsGroup, IsRecord ] ); 73DeclareOperation( "AddGeneratorToStabilizerChain", 74 [IsStabilizerChain,IsObject] ); 75DeclareOperation( "SiftGroupElement", [ IsStabilizerChain, IsObject ] ); 76DeclareOperation( "SiftGroupElementSLP", [ IsStabilizerChain, IsObject ] ); 77DeclareOperation( "StrongGenerators", [IsStabilizerChain] ); 78DeclareOperation( "NrStrongGenerators", [IsStabilizerChain] ); 79DeclareOperation( "GENSS_CreateSchreierGenerator", 80 [ IsStabilizerChain, IsPosInt, IsPosInt ] ); 81DeclareGlobalFunction( "GENSS_FindGensStabilizer" ); 82DeclareGlobalFunction( "GENSS_FindShortGensStabilizerOld" ); 83DeclareGlobalFunction( "GENSS_FindShortGensStabilizer" ); 84DeclareGlobalFunction( "SLPChainStabilizerChain" ); 85DeclareGlobalFunction( "GENSS_Prod" ); 86DeclareOperation( "VerifyStabilizerChainMC", [ IsStabilizerChain, IsInt ] ); 87DeclareGlobalFunction( "VerifyStabilizerChainTC" ); 88DeclareGlobalFunction( "VerifyStabilizerChainTC2" ); 89DeclareGlobalFunction( "GENSS_ImageElm" ); 90DeclareGlobalFunction( "GENSS_PreImagesRepresentative" ); 91DeclareGlobalFunction( "GroupHomomorphismByImagesNCStabilizerChain" ); 92DeclareOperation( "AddNormalizingGenToLayer", 93 [ IsStabilizerChain, IsObject, IsPosInt ] ); 94 95############################################################################# 96# The following operations apply to stabilizer chains: 97############################################################################# 98 99DeclareAttribute( "Size", IsStabilizerChain ); 100DeclareOperation( "IsProved", [IsStabilizerChain] ); 101DeclareOperation( "StabChainOp", [IsPermGroup, IsStabilizerChain] ); 102DeclareOperation( "GroupIteratorByStabilizerChain", [IsStabilizerChain] ); 103DeclareGlobalFunction( "GENSS_GroupNextIterator" ); 104DeclareGlobalFunction( "GENSS_GroupIsDoneIterator" ); 105DeclareGlobalFunction( "GENSS_GroupShallowCopy" ); 106DeclareGlobalFunction( "GENSS_MakeIterRecord" ); 107 108DeclareOperation( "BaseStabilizerChain", [IsStabilizerChain] ); 109DeclareOperation( "SiftBaseImage", [IsStabilizerChain, IsList] ); 110 111DeclareOperation( "SetStabilizerChain", [IsGroup,IsStabilizerChain] ); 112DeclareAttribute( "StoredStabilizerChain", IsGroup ); 113 114############################################################################# 115# The following operations are about methods to compute stabilisers: 116############################################################################# 117 118DeclareOperation( "Stab", [IsGroup, IsObject, IsFunction, IsRecord] ); 119DeclareOperation( "Stab", [IsList, IsObject, IsFunction, IsRecord] ); 120DeclareOperation( "Stab", [IsGroup, IsObject, IsFunction] ); 121DeclareOperation( "Stab", [IsList, IsObject, IsFunction] ); 122DeclareOperation( "StabMC", [IsGroup, IsObject, IsFunction, IsRecord] ); 123DeclareOperation( "StabMC", [IsGroup, IsObject, IsFunction] ); 124DeclareOperation( "StabMC", [IsList, IsObject, IsFunction, IsRecord] ); 125DeclareOperation( "StabMC", [IsList, IsObject, IsFunction] ); 126 127####################################################### 128# The following operations are for backtrack searches: 129####################################################### 130 131DeclareGlobalFunction( "BacktrackSearchStabilizerChainElement" ); 132DeclareGlobalFunction( "ComputeSuborbitsForStabilizerChain" ); 133DeclareGlobalFunction( "BacktrackSearchStabilizerChainSubgroup" ); 134 135