!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~        5Type for permutations, considered as group elements. Wx .^ g returns the image of a vertex or point x under the action of the permutation g. 8 The dot is meant to be a mnemonic for point or vertex. Ub -^ g returns the image of an edge or block b under the action of the permutation g ? The dash is meant to be a mnemonic for edge or line or block. /Construct a permutation from a list of cycles.  For example, p [[1,2,3],[4,5]]K returns the permutation that sends 1 to 2, 2 to 3, 3 to 1, 4 to 5, 5 to 4 'A trick: g^-1 returns the inverse of g (g ~^ h returns the conjugate of g by h. Q The tilde is meant to a mnemonic, because conjugacy is an equivalence relation. Ox .^^ gs returns the orbit of the point or vertex x under the action of the gs Mb -^^ gs returns the orbit of the block or edge b under the action of the gs <_C n returns generators for Cn, the cyclic group of order n <_S n returns generators for Sn, the symmetric group on [1..n] >_A n returns generators for An, the alternating group on [1..n] SGiven generators for a group, return a (sorted) list of all elements of the group. U Implemented using a naive closure algorithm, so only suitable for small groups (|G| < 10000) VGiven generators for a group, return the order of the group (the number of elements). U Implemented using a naive closure algorithm, so only suitable for small groups (|G| < 10000) JGiven a strong generating set, return the order of the group it generates dconjClassReps gs returns a conjugacy class representatives and sizes for the group generated by gs. E This implementation is only suitable for use with small groups (|G| < 10000). KReturn the subgroups of a group. Only suitable for use on small groups (eg < 100 elts) isNormal gs ks returns True if <ks> is normal in <gs>.  Note, it is caller' s responsibility to ensure that <ks> is a subgroup of <gs> (ie that each k is in <gs>). RReturn the normal subgroups of a group. Only suitable for use on small groups (eg < 100 elts) quotientGp gs ks returns <gs> / <ks> Synonym for quotientGp R !"#$%&'()*+,- ./ 0123 45 6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY  JGiven generators for a permutation group, return a strong generating set. q The result is calculated using Schreier-Sims algorithm, and is relative to the base implied by the Ord instance vGiven generators for a group, determine whether a permutation is a member of the group, using Schreier-Sims algorithm qGiven generators for a group, return a (sorted) list of all elements of the group, using Schreier-Sims algorithm tGiven generators for a group, return the order of the group (the number of elements), using Schreier-Sims algorithm Z[\]^_`abcdefghijklmnoJGiven generators for a permutation group, return a strong generating set. P The result is calculated using random Schreier-Sims algorithm, so has a small (<#10^-6) chance of being incomplete. > The sgs is relative to the base implied by the Ord instance. TGiven a strong generating set gs, isMemberSGS gs is a membership test for the group pqrstuvwxyz{|}~ LDatatype for graphs, represented as a list of vertices and a list of edges. g Both the list of vertices and the list of edges, and also the 2-element lists representing the edges, < are required to be in ascending order, without duplicates. !9combinationsOf k xs returns the subsets of xs of size k. K If xs is in ascending order, then the returned list is in ascending order "=Safe constructor for graph from lists of vertices and edges. K graph (vs,es) checks that vs and es are valid before returning the graph. #$&c n is the cyclic graph on n vertices %(k n is the complete graph on n vertices &HGiven a graph with vertices which are lists of small integers, eg [1,2,3], f return a graph with vertices which are the numbers obtained by interpreting these as digits, eg 123. b The caller is responsible for ensuring that this makes sense (eg that the small integers are all < 10) ':Given a graph with vertices which are lists of 0s and 1s, e return a graph with vertices which are the numbers obtained by interpreting these as binary digits.  For example, [1,1,0] -> 6. (JThe diameter of a graph is maximum distance between two distinct vertices )IThe girth of a graph is the size of the smallest cycle that it contains. M Note: If the graph contains no cycles, we return -1, representing infinity. *-kneser n k returns the kneser graph KG n,k - 2 whose vertices are the k-element subsets of [1..n]&, with edges joining disjoint subsets ? !"#$%&'()* ! "#$%&'()*  !"#$%&'()*+^Given a graph g, graphAuts g returns a strong generating set for the automorphism group of g. +++! ,-./0123456789:;<=>?@ABCDEFGHIJK ,-./0123456789:;<=>?@ABCDEFGHIJK JKHIGFEDCBA@?>=<;:9876543210/.-, ,-./0123456789:;<=>?@ABCDEFGHIIJKKL/Phantom type for an elimination term ordering. u In the ordering, xis come before yjs come before zks, but within the xis, or yjs, or zks, grevlex ordering is used M0Phantom type representing grevlex term ordering N-Phantom type representing glex term ordering O,Phantom type representing lex term ordering PQRSLMNOPQRSPQONMLRSLMNOPQQRS $TUVWXYZ[\]^_`abcdefghi2F7 is a type for the finite field with 7 elements j2F5 is a type for the finite field with 5 elements k2F3 is a type for the finite field with 3 elements l2F2 is a type for the finite field with 2 elements mnopqrRQ is just the rationals, but with a better show function than the Prelude version stf2 lists the elements of F2 uf3 lists the elements of F3 vf5 lists the elements of F5 wf7 lists the elements of F7 ?TUVWXYZ[\]^_`abcdefghijklmnopqrstuvw     $rspqmnoltkujviwhgfedcba`_^]\[ZYXWVUT$TUVWXYZ[\]^_`abcdefghijklmnonopqqrsstuvw x#Type for multivariate polynomials. f ord is a phantom type defining how terms are ordered, r is the type of the ring we are working over. q For example, a common choice will be MPoly Grevlex Q, meaning polynomials over Q with the grevlex term ordering yz*Create a variable with the supplied name. f By convention, variable names should usually be a single letter followed by none, one or two digits. {|}~*Convert a polynomial to lex term ordering +Convert a polynomial to glex term ordering .Convert a polynomial to grevlex term ordering 1xyz{|}~ !"#$%&'()*+,-./0123xyz|}~{xyyz{|}~ mGiven a list of polynomials over a field, return a Groebner basis for the ideal generated by the polynomials 456789:;<=>?@ABCDEF FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl  mnopqrstuvwxyz{|}~  " u <+>" v returns the sum u+v of vectors u <->) v returns the difference u-v of vectors k *>< v returns the product k*v of the scalar k and the vector v u <.>L v returns the dot product of vectors (also called inner or scalar product) u <*>O v returns the tensor product of vectors (also called outer or matrix product) a <<+>># b returns the sum a+b of matrices a <<->>* b returns the difference a-b of matrices a <<*>>' b returns the product a*b of matrices k *>< m returns the product k*m of the scalar k and the matrix m m <<*>9 v is multiplication of a vector by a matrix on the left v <*>>: m is multiplication of a vector by a matrix on the right !iMx n is the n*n identity matrix "jMx n is the n*n matrix of all 1s "zMx n is the n*n matrix of all 0s 5The inverse of a matrix (over a field), if it exists +The determinant of a matrix (over a field)  _ptsAG n fq returns the points of the affine geometry AG(n,Fq), where fq are the elements of Fq cptsPG n fq returns the points of the projective geometry PG(n,Fq), where fq are the elements of Fq PflatsPG n fq k returns the k-flats in PG(n,Fq), where fq are the elements of Fq PflatsAG n fq k returns the k-flats in AG(n,Fq), where fq are the elements of Fq  The lines (1-flats) in PG(n,fq)  The lines (1-flats) in AG(n,fq) [Incidence graph of PG(n,fq), considered as an incidence structure between points and lines [Incidence graph of AG(n,fq), considered as an incidence structure between points and lines    ?   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH'IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk"lmnopqrstuvwxyz{|}~ %  7%     !!"#$%&'()*+,-./012345678./9:7;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijkllmn o p q r s t u v w x y z { | } ~                 A                                     l e!##=     ., !"#$%&'()*+,-./0123456789:C;D<=8>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefF3gEhNOPijklmnopqrstLuvwxyz{|}~N/                                                 ! " # $ % & ' ( ) * + , -  . / 0 1 2 3 4 5 6 7 8 9 :   ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y     Z  [ \  ] " ! $ ' &(*^+_`abcdefghijklmnopqrst-uvwxyz{|  Z}~!$abcdeU-'       !"#$%&'()*+,-./0123456789:;<=>?@AB/CDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _  `   a b c d efEghiUBjklmnopqrstuvwxyz{|}~/"%g9HaskellForMaths-0.2.1"Math.Algebra.Group.StringRewriting#Math.Algebra.Group.PermutationGroupMath.Algebra.Group.SchreierSims%Math.Algebra.Group.RandomSchreierSimsMath.Combinatorics.GraphMath.Combinatorics.GraphAutsMath.Common.IntegerAsType!Math.Algebra.Commutative.MonomialMath.Algebra.Field.BaseMath.Algebra.Commutative.MPolyMath.Algebra.Commutative.GBasisMath.Algebra.Field.Extension"Math.Algebra.NonCommutative.NCPoly)Math.Algebra.NonCommutative.TensorAlgebra%Math.Projects.KnotTheory.LaurentMPolyMath.Projects.KnotTheory.Braid&Math.Projects.KnotTheory.TemperleyLieb%Math.Projects.KnotTheory.IwahoriHeckeMath.Algebra.LinearAlgebra!Math.Combinatorics.FiniteGeometryMath.Combinatorics.Design'Math.Combinatorics.StronglyRegularGraphMath.Combinatorics.HypergraphMath.Projects.RootSystem$Math.Projects.MiniquaternionGeometry(Math.Projects.ChevalleyGroup.ExceptionalMath.Common.ListSetMath.Algebra.Group.SubquotientsMath.Projects.Rubik#Math.Algebra.NonCommutative.GSBasisMath.Combinatorics.LatinSquares&Math.Projects.ChevalleyGroup.ClassicalS PermutationP.^-^p^-~^.^^-^^_C_S_AeltsorderorderSGS conjClassRepssubgpsisNormal normalSubgps quotientGp//sgsisMember initProdRepl nextProdRepl isMemberSGSGraphGcombinationsOfgraph nullGraphck fromDigits fromBinarydiametergirthkneser graphAutsT97T89T83T79T73T71T67T61T59T53T47T43T41T37T31T29T23T19T17T13T11T7T5T3T2TOneTZeroTMinus1M IntegerAsTypevalueElimGrevlexGlexLexMonomialconvertMsupportMF97F89F83F79F73F71F67F61F59F53F47F43F41F37F31F29F23F19F17F13F11F7F5F3F2 FiniteFieldeltsFqbasisFqFpQf2f3f5f7MPolyMPvarabdstuvwxyzx0x1x2x3toLextoGlex toGrevlextoElimgb QSqrtMinus5 QSqrtMinus3 QSqrtMinus2 QSqrtMinus1QSqrt7QSqrt5QSqrt3QSqrt2SqrtF32 ConwayF32F27 ConwayF27F25 ConwayF25F16 ConwayF16F9ConwayF9F8ConwayF8F4ConwayF4ExtensionFieldExtPolynomialAsTypepvalueUPolyUP quotRemUP conjugate InvertibleinvVarZYXNPolyNPWeylGensDBasisE LaurentMPolyLPLaurentMonomialLM BraidGensLPQTemperleyLiebGensIwahoriHeckeGensT<+><->*><.><*><<+>><<->><<*>>*>><<*><*>>iMxjMxzMxinversereducedRowEchelonFormdet ZeroOneStarStarOneZeroptsAGptsPGflatsPGflatsAGlinesPGlinesAGincidenceGraphPGincidenceGraphAGDesign DesignVertexBC Incidence HypergraphHTypeFAbasisEltJ9OctonionOrewrite rewrite''splitSubstring findOverlap knuthBendix1ordpairshortlex knuthBendix2merge knuthBendix3 knuthBendixnfss_s1s2s3tri_D toListSet isListSetunion intersect\\symDiffdisjointisSubsetrotateL fromPairs fromPairs'toPairsfromListsupp fromCyclestoCyclescycleOfparitysignorderEltcommclosureSclosureorbitorbitPorbitVorbitBorbitEactionorbits_D2dpwrtoSn fromDigits' fromBinary'eltsSminsupporderTGSeltsTGS tgsFromSgsgens~^^ conjClass reduceGensisSubgp isMinimal centralizercentre normalizer stabilizerptStabsetStab normalClosure commutatorGp derivedSubgp-*--**-isSimplecosets~~^conjugateSubgps subgpAction cosetRepsGxschreierGeneratorsGxsiftfindBasebsgsbsgs'newLevel newLevel'ssss' isMemberBSGSeltsBSGScartProd orderBSGSindexreduceGensBSGS testProdRepl updateArrayrssrss' initLevels updateLevels updateLevels'baseTransversalsSGSisLeftisRightunRight restrictLeft isTransitive!transitiveConstituentHomomorphism"transitiveConstituentHomomorphism' minimalBlock blockSystemsblockSystemsSGS isPrimitiveisPrimitiveSGSblockHomomorphismblockHomomorphism'intersectionNormalClosurecentralizerSymTranssetpowerset isSetSystemisGraphtoGraphverticesedgesincidenceMatrixfromIncidenceMatrixadjacencyMatrixfromAdjacencyMatrixkbkb'q'q tetrahedroncube octahedron dodecahedron icosahedronto1npetersen complement lineGraph lineGraph'sizevalency valenciesvalencyPartition regularParam isRegularisCubicnbrs findPathsdistance findCyclesdistancePartition component isConnectedjjohnsonbipartiteKneser desargues1gp petersen2prismdurer mobiusKantor dodecahedron2 desargues2isVertexTransitiveisEdgeTransitive->^isArcTransitiveisArcTransitive'findArcsisnArcTransitiveis2ArcTransitiveis3ArcTransitiveisDistanceTransitiverefinerefine' isGraphAut graphAuts1 graphAuts2 graphAuts3 isSingleton graphAuts4eqgraph toEquitable toEquitable2 splitNumNbrs dfsEquitable incidenceAuts graphIsosisIsoflr rubikCube cornerFaces edgeFaceskerCornerFaces imCornerFaces kerEdgeFaces imEdgeFaces cornerBlocks edgeBlockskerCornerBlocksimCornerBlocks kerEdgeBlocks imEdgeBlocks_U_u_dbf_R_r_l_Lud_B_b_f_FdiffsdegMdividesMproperlyDividesMlcmMgcdMcoprimeM numeratorQ denominatorQextendedEuclid primitiveEltpowerscharf11f13f17f19f23f29f31f37f41f43f47f53f59f61f67f71f73f79f83f89f97cmpTerm mergeTermscollectx_ convertMPvarLexvarElimltlmdegmulTdivTdividesTproperlyDividesTlcmT.* quotRemMP%%divModMPdivMPmodMPinjecttoMonictoZsubstsupportsPolyisGBgb1pairWithreducegb2pairs!gb2bgb3bcmpFstmergeBygb4bsugar cmpNormalcmpSuggb3gb4showUPtoUPolyconvertmonomialmodUPextendedEuclidUP/>embedpolysf4a4f8a8f9a9f16a16f25a25f27a27f32a32 frobeniusAutdegreesqrt2sqrt3sqrt5sqrt7i sqrtminus2 sqrtminus3 sqrtminus5divMlc quotRemNPremNPremNP2gb'gb2'mbasisQAe_e1e2e3e4dim tensorBasis extRelationsextnf exteriorBasis symRelationssymnfsymmetricBasis weylRelationsweylnf weylBasisd_d1d2d3deltaweylRelations'weylnf' weylBasis'degLM denominatorLMlcmLMdivLM quotRemLPreduceLP denominatorLPsqrtvar^^^s4writhek3_1k4_1k5_1k7_1d' tlRelationsdimTLtlnftlBasistr'tra' fromBraidjonest_t1t2t3t4z' ihRelationsdimIHihnfihBasistau'tauhomflymhomfly'homfly''coeffsjones'fMatrixfMatrix'idMxinverse1inverse2rowEchelonFormkernel kernelRREpnfispnf closureAGlineAG closurePGlinePGqtorialqnomial numFlatsPG numFlatsAGqtorialsqnomialsrrefslinesAG1linesAG2orderGLorderAfforderPGLheawooddesigntoDesignisValidpointsblocksnoRepeatedBlocks tDesignParamsfindvk findlambda designParams isStructureisDesign is2DesignisSquare subsetDesign pairDesignag2pg2 flatsDesignPGpg flatsDesignAGag paleyDesign fanoPlanedual derivedDesign pointResidualcomplementaryDesign blockResidual isDesignAutincidenceGraph designAuts designAuts1 alphaL2_23 betaL2_23 gammaL2_23l2_23deltaM24m24m24sgsm23sgsm22sgsoctads_5_8_24s_4_7_23s_3_6_22 s_5_8_24' alphaL2_11 betaL2_11 gammaL2_11l2_11deltaM12hexads_5_6_12s_4_5_11m12m12sgsm11sgs srgParamsisSRGt'l2l2' paleyGraphclebschclebsch'clebsch2triplesheptads+^+^^hoffmanSingletonhoffmanSingleton' inducedA7hsA7gewirtzgewirtz'higmanSimsGraphhigmanSimsGraph' inducedM22 higmanSimsM22_HS2_HSsp2spswitchschlafli schlafli' mcLaughlin mcLaughlin'_McL2_McL hypergraph toHypergraph isUniformsame fromGraph fromDesignisPartialLinearSpaceisProjectivePlaneisProjectivePlaneTriisProjectivePlaneQuadisGeneralizedQuadranglegriddualGridisGenQuadrangle'isConfiguration heawoodGraphdesarguesConfigurationdesarguesGraphpappusConfiguration pappusGraph coxeterGraphduads synthemestutteCoxeterGraphintersectionGraph findLatinSqs isLatinSq isOneOfEachincidenceGraphLSincidenceGraphLS' isOrthogonalfindMOLSisMOLSfromProjectivePlaneisOAfromLSfromMOLSgraphOA srgParamsOA simpleSystem weylPerms weylMatriceswMx cartanMatrixsetDiagdynkinFromCartan dynkinDiagramcoxeterFromDynkin coxeterMatrixfromCoxeterMatrixfromCoxeterMatrix2coxeterPresentation eltsCoxeter poincarePolyelemMxlieMult+|++-+form rootSystemnumRoots orderWeyl factorialtest1test2numPtsAGnumPtsPGslelemTransvectionorderLorderS2orderS omegaevenomegaoddoeconjnorm squaresF9j9autJ9autAautBautCautsJ9conj'isAutisReal isComplexprop_NearFieldprop_NearFieldF9prop_NearFieldJ9ptsPG2orthogonalLinesPG2 rightLinesPG2 leftLinesPG2phiphi'collineationsPhi liftToGraphomega0omegaomega2collineationsOmegaomegaDomegaD1omegaD2<*psipsi2collineationsPsi collinear isQuadrangle concurrentisQuadrilateralisOval findOvals1findQuadrangles findOvalsi0i1i2i3i4i5i6toListexposenfsqnorm antiCommutes octonionsisUnitunitImagOctonionsautFrom%^alpha3beta3gamma3sgamma3alpha3'beta3'gamma3'alpha4beta4gamma4sgamma4alpha4'beta4'gamma4'