!"#$%&'()*+,-./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 { | } ~  !DGiven a list of rewrite rules of the form (left,right), and a word, ^ rewrite it by repeatedly replacing any left substring in the word by the corresponding right lImplementation of the Knuth-Bendix algorithm. Given a list of relations, return a confluent rewrite system. / The algorithm is not guaranteed to terminate. WGiven generators and a confluent rewrite system, return (normal forms of) all elements FGiven generators and relations, return (normal forms of) all elements       !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"#$%&' ( )*+,-. /012 3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^  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 _`abcdefghijklmnopqrst !JGiven 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 u v!wxyz{|" !" !"}~ #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 ?#$%&'()*+,-. %#$&'()*+,-. #$$%&'()*+,-./01FThe Cayley graph (undirected) on the generators (and their inverses), # for a group given as permutations 2FThe Cayley graph (undirected) on the generators (and their inverses), / for a group given as generators and relations /012/012/00123^Given a graph g, graphAuts g returns a strong generating set for the automorphism group of g. 333! 456789:;<=>?@ABCDEFGHIJKLMNOPQRS 456789:;<=>?@ABCDEFGHIJKLMNOPQRS RSPQONMLKJIHGFEDCBA@?>=<;:987654 456789:;<=>?@ABCDEFGHIJKLMNOPQQRSS T/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 U0Phantom type representing grevlex term ordering V-Phantom type representing glex term ordering W,Phantom type representing lex term ordering XYZ[TUVWXYZ    [XYWVUTZ[TUVWXYYZ[ $\]^_`abcdefghijklmnopq2F7 is a type for the finite field with 7 elements r2F5 is a type for the finite field with 5 elements s2F3 is a type for the finite field with 3 elements t2F2 is a type for the finite field with 2 elements uvwxyzRQ is just the rationals, but with a better show function than the Prelude version {|f2 lists the elements of F2 }f3 lists the elements of F3 ~f5 lists the elements of F5 f7 lists the elements of F7 ?\]^_`abcdefghijklmnopqrstuvwxyz{ |}~ !"#$%&'$z{xyuvwt|s}r~qponmlkjihgfedcba`_^]\$\]^_`abcdefghijklmnopqrstuvwvwxyyz{{|}~ #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 *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 1()*+,-./0123456789:;<=>?@A mGiven a list of polynomials over a field, return a Groebner basis for the ideal generated by the polynomials BCDEFGHIJKLMNOPQRST FUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz  {|}~  " 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:;<=>?@ABCDEFGHIJKLMNOPQRSTUV'WXYZ[\]^_`abcdefghijklmnopqrstuvwxy"z{|}~  #  !7%      !"#$%"#$%&'()*+,-./0123'456789:;<='4>?<@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnnop q r s t u u v w x y z { | } ~                          F                              un#)) B     2 !"#$%&'()*+,-./0123456789:;<=>?@AHBICD=EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmM8nLoUVWpqrstuvwxyz{S|}~U4                                        ! " # $ % & ' ( ) * + , - . / 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 [ \ ] ^ _ ` a b c d e f g hi$j#kl-m214-68:n;opqrstuvwxyz{|}~4$j#14qrstue=-'      !"#$%&'()*+,-./0123456789:;<=>?@ABC D E F G H I J K L M N O P QR6STUVWXYZ[\]^_`abcdefghi!j!k!l!m!!n!"!!!o!p!q!!r!!stUuvweGxyz{|}~42,uIHaskellForMaths-0.2.2"Math.Algebra.Group.StringRewriting#Math.Algebra.Group.PermutationGroupMath.Algebra.Group.SchreierSims%Math.Algebra.Group.RandomSchreierSimsMath.Combinatorics.GraphMath.Algebra.Group.CayleyGraphMath.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.ClassicalSGenSrewrite knuthBendixnfselts PermutationP.^-^p^-~^.^^-^^_C_S_AorderorderSGS conjClassRepssubgpsisNormal normalSubgps quotientGp//sgsisMember initProdRepl nextProdRepl isMemberSGSGraphGcombinationsOfgraph nullGraphck fromDigits fromBinarydiametergirthkneserDigraphDG cayleyGraphP cayleyGraphS graphAutsT97T89T83T79T73T71T67T61T59T53T47T43T41T37T31T29T23T19T17T13T11T7T5T3T2TOneTZeroTMinus1M IntegerAsTypevalueElimGrevlexGlexLexMonomialconvertMsupportMF97F89F83F79F73F71F67F61F59F53F47F43F41F37F31F29F23F19F17F13F11F7F5F3F2 FiniteFieldeltsFqbasisFqFpQf2f3f5f7MPolyMPvarabdstuvwxyzx0x1x2x3toLextoGlex toGrevlextoElimgb QSqrtMinus5 QSqrtMinus3 QSqrtMinus2 QSqrtMinus1QSqrt7QSqrt5QSqrt3QSqrt2SqrtF32 ConwayF32F27 ConwayF27F25 ConwayF25F16 ConwayF16F9ConwayF9F8ConwayF8F4ConwayF4ExtensionFieldExtPolynomialAsTypepvalueUPolyUP quotRemUP conjugate InvertibleinvVarZYXNPolyNPWeylGensDBasisE LaurentMPolyLPLaurentMonomialLM BraidGensLPQTemperleyLiebGensIwahoriHeckeGensT<+><->*><.><*><<+>><<->><<*>>*>><<*><*>>iMxjMxzMxinversereducedRowEchelonFormdet ZeroOneStarStarOneZeroptsAGptsPGflatsPGflatsAGlinesPGlinesAGincidenceGraphPGincidenceGraphAGDesign DesignVertexBC Incidence HypergraphHTypeFAbasisEltJ9OctonionOrewrite1splitSubstring findOverlap knuthBendix1ordpairshortlex knuthBendix2merge knuthBendix3s_s1s2s3_S'tri_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 desargues2toSetcayleyDigraphPcayleyDigraphSfromTranspositions fromTrans bubblesorttoTranstoTranspositions inversionsisVertexTransitiveisEdgeTransitive->^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 factorialnumPtsAGnumPtsPGslelemTransvectionorderLorderS2orderS 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'