5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl m n o p q r s t u v w x y z { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!"""""""########$$$$$$$$$$%%%%%%%%%%%%%%%%%&&&&&&&&&&&&'''''''''''''''''''''''(((())))))))))))))))))*****+++++++++++ + + + + +,,,,,,,,,,,,------ -!-"-#.$.%.&.'/(/)/*/+0,0-0.0/000102030403eA digraph is represented as DG vs es, where vs is the list of vertices, and es is the list of edges. > Edges are directed: an edge (u,v) means an edge from u to v. X A digraph is considered to be in normal form if both es and vs are in ascending order. \ This is the preferred form, and some functions will only work for digraphs in normal form. Are the two DAGs isomorphic? cGiven a directed acyclic graph (DAG), return a canonical representative for its isomorphism class.   isoRepDAG dag is isomorphic to dag. It follows that if  isoRepDAG dagA == isoRepDAG dagB then dagA is isomorphic to dagB.  Conversely,  isoRepDAG dagO is the minimal element in the isomorphism class, subject to some constraints.  It follows that if dagA is isomorphic to dagB, then  isoRepDAG dagA == isoRepDAG dagB. NThe algorithm of course is faster on some DAGs than others: roughly speaking,  it prefers "tall" DAGs (long chains) to "wide" DAGs (long antichains), M and it prefers asymmetric DAGs (ie those with smaller automorphism groups). 56789:;<=>?@ABCDGiven a finite vector space basis b, Dual b represents a basis for the dual vector space. (If b is infinite, then Dual b is only a sub-basis.) rTrivial k is the field k considered as a k-vector space. In maths, we would not normally make a distinction here, _ but in the code, we need this if we want to be able to put k as one side of a tensor product.  xGiven a field type k (ie a Fractional instance), Vect k b is the type of the free k-vector space over the basis type b. I Elements of Vect k b consist of k-linear combinations of elements of b. The zero vector Addition of vectors "Addition of vectors (same as add) Sum of a list of vectors Negation of vector Subtraction of vectors $Scalar multiplication (on the left) Same as smultL. Mnemonic is  multiply through (from the left) #Scalar multiplication on the right Same as smultR. Mnemonic is !multiply through (from the right) wConvert an element of Vect k b into normal form. Normal form consists in having the basis elements in ascending order, 3 with no duplicates, and all coefficients non-zero % EFG HIJKLMNOPQRS   IA type for constructing a basis for the tensor product of vector spaces. D The tensor product of Vect k a and Vect k b is Vect k (Tensor a b) EA type for constructing a basis for the direct sum of vector spaces. > The direct sum of Vect k a and Vect k b is Vect k (DSum a b) *Injection of left summand into direct sum +Injection of right summand into direct sum >The coproduct of two linear functions (with the same target). W Satisfies the universal property that f == coprodf f g . i1 and g == coprodf f g . i2 -Projection onto left summand from direct sum .Projection onto right summand from direct sum !<The product of two linear functions (with the same source). S Satisfies the universal property that f == p1 . prodf f g and g == p2 . prodf f g ",The direct sum of two vector space elements #(The direct sum of two linear functions. ] Satisfies the universal property that f == p1 . dsumf f g . i1 and g == p2 . dsumf f g . i2 $0The tensor product of two vector space elements %+The tensor product of two linear functions &'()*+,-./012 !"#$%&'()*+,-./01T2 !"#$%&'()*+,-./012 !"#$%&'()*+,-./0123456789:;<=]A bialgebra is an algebra which is also a coalgebra, subject to the compatibility conditions t that counit and comult must be algebra morphisms (or equivalently, that unit and mult must be coalgebra morphisms) >cAn instance declaration for Coalgebra k b is saying that the vector space Vect k b is a k-algebra. ?@ArCaution: If we declare an instance Algebra k b, then we are saying that the vector space Vect k b is a k-algebra. k In other words, we are saying that b is the basis for a k-algebra. So a more accurate name for this class  would have been AlgebraBasis. BCDMonoid EFGHUVThe tensor product of k-coalgebras can itself be given the structure of a k-coalgebra VRThe tensor product of k-algebras can itself be given the structure of a k-algebra WSThe direct sum of k-coalgebras can itself be given the structure of a k-coalgebra. ? This is the coproduct object in the category of k-coalgebras. XOThe direct sum of k-algebras can itself be given the structure of a k-algebra. ; This is the product object in the category of k-algebras. 3456789:;<=>?@ABCDEFGHYDEFABC>?@=;<GH9:7856343445667889::;<<=>?@?@ABCBCDEFEFGHIJKDGiven 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 LlImplementation of the Knuth-Bendix algorithm. Given a list of relations, return a confluent rewrite system. / The algorithm is not guaranteed to terminate. MWGiven generators and a confluent rewrite system, return (normal forms of) all elements NFGiven generators and relations, return (normal forms of) all elements IJKZ[\]^_`abLMNcdefghijKLMNIJIJJKLMN1klmnopqrOiA type for permutations, considered as functions or actions which can be performed on an underlying set. PQWx .^ 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. RVb -^ 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. S/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 T'A trick: g^-1 returns the inverse of g U(g ~^ h returns the conjugate of g by h. Q The tilde is meant to a mnemonic, because conjugacy is an equivalence relation. VOx .^^ gs returns the orbit of the point or vertex x under the action of the gs WMb -^^ gs returns the orbit of the block or edge b under the action of the gs X<_C n returns generators for Cn, the cyclic group of order n Y<_S n returns generators for Sn, the symmetric group on [1..n] Z>_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>). aRReturn the normal subgroups of a group. Only suitable for use on small groups (eg < 100 elts) bquotientGp gs ks returns <gs> / <ks> cSynonym for quotientGp ROPstuvwxQRySz{|}~TUVWXYZ[\]^_`abcOPQRSTUVWXYZ[\]^_`abcOPPQRSTUVWXYZ[\]^_`abcdJGiven 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 evGiven generators for a group, determine whether a permutation is a member of the group, using Schreier-Sims algorithm fqGiven generators for a group, return a (sorted) list of all elements of the group, using Schreier-Sims algorithm gtGiven generators for a group, return the order of the group (the number of elements), using Schreier-Sims algorithm defgdefgdefghijJGiven 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. kTGiven a strong generating set gs, isMemberSGS gs is a membership test for the group hijkhijkhijk lmzGiven a group gs and a transitive constituent ys, return the kernel and image of the transitive constituent homomorphism. d That is, suppose that gs acts on a set xs, and ys is a subset of xs on which gs acts transitively. m Then the transitive constituent homomorphism is the restriction of the action of gs to an action on the ys. n[Given a transitive group gs, find all non-trivial block systems. That is, if gs act on xs, y find all the ways that the xs can be divided into blocks, such that the gs also have a permutation action on the blocks o<A more efficient version of blockSystems, if we have an sgs pHA permutation group is primitive if it has no non-trivial block systems qrnGiven a transitive group gs, and a block system for gs, return the kernel and image of the block homomorphism 8 (the homomorphism onto the action of gs on the blocks) lmnopqrlmnopqrlmnopqr sLDatatype for graphs, represented as a list of vertices and a list of edges. > For most purposes, graphs are required to be in normal form. W A graph G vs es is in normal form if (i) vs is in ascending order without duplicates, ^ (ii) es is in ascending order without duplicates, (iii) each e in es is a 2-element list [x,y], x<y tu9combinationsOf 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 vZConvert a graph to normal form. The input is assumed to be a valid graph apart from order w=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. x8The null graph on n vertices is the graph with no edges y*The null graph, with no vertices or edges z&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 Bstuvwxyz{|}~    ustvwxyz{|}~sttuvwxyz{|}~ FThe Cayley graph (undirected) on the generators (and their inverses), # for a group given as permutations FThe Cayley graph (undirected) on the generators (and their inverses), / for a group given as generators and relations   ^Given a graph g, graphAuts g returns a strong generating set for the automorphism group of g.  !"#$%&'()*+,-./02!123456789:;<=>?@ABCDEFGHIJKLMNOPQ !RSTUVWXYZ[\]^_ /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 0Phantom type representing grevlex term ordering -Phantom type representing glex term ordering ,Phantom type representing lex term ordering `abcdef$2F7 is a type for the finite field with 7 elements 2F5 is a type for the finite field with 5 elements 2F3 is a type for the finite field with 3 elements 2F2 is a type for the finite field with 2 elements RQ 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 ?ghijklmnopqrstuvwxyz{|}~$$#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 1mGiven a list of polynomials over a field, return a Groebner basis for the ideal generated by the polynomials       F                   !"#$%&'RCreate a non-commutative variable for use in forming non-commutative polynomials. & For example, we could define x = var x , y = var y . Then x*y /= y*x.  !"#$%&' %&#$"! ' "!  !"#$$%&&'3 ()*+,"()*+,    +,(*)(*))*+,, -./01234561In effect, we have (Num k, Monomial m) => Monad (v8 -> Vect k (m v)), with return = var, and (>>=) = bind.  However, we can'Mt express this directly in Haskell, firstly because of the Ord b constraint,  secondly because Haskell doesn't support type functions. 7-./012345 67 4530126-./7 -././0121234556789:;<=>?@ABCDE89:;<=>?@ABCDE?A@:>=<;CDEB89899:>=<;;<=>?A@@ABCDEFGFGFGFGHIJHIJIJHHIJJKLMNOP KLMNOPOPMNKLKLLMNNOPPQRSTUVWXQRSTUVWX !"WXTUVSQRQRRSTUVUVWXX YZ[\]^_`abcde YZ[\]^_`abcde Z^]\[Y`a_cdeb YZ^]\[[\]^_`abcde%fghJA data type representing basis elements of the exterior algebra over a set/type. ? The exterior algebra is the quotient of the tensor algebra by  the ideal generated by all  self-products u"u and sums of products u"v + v"u ijKA data type representing basis elements of the symmetric algebra over a set/type. @ The symmetric algebra is the quotient of the tensor algebra by  the ideal generated by all  differences of products u"v - v"u. klHA data type representing basis elements of the tensor algebra over a set/type. j Elements of the tensor algebra are linear combinations of iterated tensor products of elements of the set/type. x If V = Vect k a is the free vector space over a, then the tensor algebra T(V) = Vect k (TensorAlgebra a) is isomorphic  to the infinite direct sum:  T(V) = k " V " V"V " V"V"V " ... 1 where 1 is the unit vector space k =~ Vect k () mnpInject an element of the free vector space V = Vect k a into the tensor algebra T(V) = Vect k (TensorAlgebra a) oInject an element of the set/type A/;a into the tensor algebra T(A) = Vect k (TensorAlgebra a). pLGiven vector spaces A = Vect k a, B = Vect k b, where B is also an algebra, 5 lift a linear map f: A -> B to an algebra morphism f' : T(A) -> B, < where T(A) is the tensor algebra Vect k (TensorAlgebra a).  f'C will agree with f on A itself (considered as a subspace of T(A)).  In other words, f = f' . injectTA q Given a set/type A/@a, and a vector space B = Vect k b, where B is also an algebra, 3 lift a function f: A -> B to an algebra morphism f' : T(A) -> B.  f'5 will agree with f on A itself. In other words, f = f' . injectTA' r2Tensor algebra is a functor from k-Vect to k-Alg. @ The action on objects is Vect k a -> Vect k (TensorAlgebra a). ( The action on arrows is f -> fmapTA f. skIf we compose the free vector space functor Set -> k-Vect with the tensor algebra functor k-Vect -> k-Alg, = we obtain a functor Set -> k-Alg, the free algebra functor. 9 The action on objects is a -> Vect k (TensorAlgebra a). $ The action on arrows is f -> fmapTA' f. tuv;Algebra morphism from tensor algebra to symmetric algebra. : The kernel of the morphism is the ideal generated by all  differences of products u"v - v"u. wxyz{|}~:Algebra morphism from tensor algebra to exterior algebra. : The kernel of the morphism is the ideal generated by all  self-products u"u and sums of products u"v + v"u 'fghijklmnopqrstuvwxyz{|}~#$%lmnopqrstujkvwxyz{|}~hifg%fgghiijkklmmnopqrstuvwxyz{|}~%&'()*+,-./0123456789: ;<=>?@ABCD EFGHIJKLMNOPQRSTU!VWXYZ[\]^_`abcdefghijklm"*nopqrstuvwxyz{|}~#$   %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   'UThe incidence matrix of a design, with rows indexed by blocks and columns by points. S (Note that in the literature, the opposite convention is sometimes used instead.) 0The affine plane AG(2,Fq), a 2-(q^2,q,1) design AThe projective plane PG(2,Fq), a square 2-(q^2+q+1,q+1,1) design The dual of a design  The incidence graph of a design DFind a strong generating set for the automorphism group of a design OGenerators for the Mathieu group M24, a finite simple group of order 244823040 \A strong generating set for the Mathieu group M24, a finite simple group of order 244823040 [A strong generating set for the Mathieu group M23, a finite simple group of order 10200960 YA strong generating set for the Mathieu group M22, a finite simple group of order 443520 OThe Steiner system S(5,8,24), with 759 blocks, whose automorphism group is M24 OThe Steiner system S(4,7,23), with 253 blocks, whose automorphism group is M23 NThe Steiner system S(3,6,22), with 77 blocks, whose automorphism group is M22 OThe Steiner system S(5,6,12), with 132 blocks, whose automorphism group is M12 NThe Steiner system S(4,5,11), with 66 blocks, whose automorphism group is M11 KGenerators for the Mathieu group M12, a finite simple group of order 95040 XA strong generating set for the Mathieu group M12, a finite simple group of order 95040 WA strong generating set for the Mathieu group M11, a finite simple group of order 7920 ?('     )JIs this hypergraph uniform - meaning that all blocks are of the same size [Is this hypergraph a projective plane - meaning that any two lines meet in a unique point, ) and any two points lie on a unique line 7Is this hypergraph a projective plane with a triangle. } This is a weak non-degeneracy condition, which eliminates all points on the same line, or all lines through the same point. 9Is this hypergraph a projective plane with a quadrangle. . This is a stronger non-degeneracy condition. 1Is this hypergraph a (projective) configuration. ;The Heawood graph is the incidence graph of the Fano plane 6The Tutte-Coxeter graph, also called the Tutte 8-cage  *&Are the two latin squares orthogonal? HAre the latin squares mutually orthogonal (ie each pair is orthogonal)? MOLS from a projective plane !"#$%&'()+~A poset is represented as a pair (set,po), where set is the underlying set of the poset, and po is the partial order relation NA chain is a poset in which every pair of elements is comparable (ie either x < = y or y <= x). * It is therefore a linear or total order. 6 chainN n is the poset consisting of the numbers [1..n] ordered by (<=) EAn antichain is a poset in which distinct elements are incomparable. . antichainN n is the poset consisting of [1..n] , with x <= y only when x == y. 4posetD n is the lattice of (positive) divisors of n +posetB n is the lattice of subsets of [1..n] ordered by inclusion .posetP n is the lattice of partitions of [1..n] ordered by refinement XposetL n fq is the lattice of subspaces of the vector space Fq^n, ordered by inclusion. > Subspaces are represented by their reduced row echelon form. /The subposet of a poset satisfying a predicate The direct sum of two posets !The direct product of two posets  The dual of a poset  Given a poset (X,<'=), we say that y covers x, written x -< y, if x <! y and there is no z in X with x < z < y. [ The Hasse digraph of a poset is the digraph whose vertices are the elements of the poset, / with an edge between every pair (x,y) with x -< y. l The Hasse digraph can be represented diagrammatically as a Hasse diagram, by drawing x below y whenever x -< y.  wGiven a DAG (directed acyclic graph), return the poset consisting of the vertices of the DAG, ordered by reachability. = This can be used to recover a poset from its Hasse digraph.   %Are the two posets order-isomorphic? +*+,-./0123456789:;<=>    ? @ABCD          , FA type to represent an interval in a poset. The (closed) interval [x,y] is the set {z | x <= z <= y} within the poset.  Note that the "empty interval"0 is not an interval - that is, the interval [x,y] is only defined for x <= y. c The (closed) intervals within a poset form a basis for the incidence algebra as a k-vector space. NList representatives of the order isomorphism classes of intervals in a poset -The unit of the incidence algebra of a poset The zeta function of a poset The Mobius function of a poset ?The inverse of an element in the incidence algebra of a poset. M This is only defined for elements which are non-zero on all intervals (x,x) iA function (ie element of the incidence algebra) that counts the total number of chains in each interval kA function (ie element of the incidence algebra) that counts the number of maximal chains in each interval  toIsoClassesI is the linear map from the incidence Hopf algebra of a poset to itself, \ in which each interval is mapped to (the minimal representative of) its isomorphism class. ` Thus the result can be considered as a linear combination of isomorphism classes of intervals, & rather than of intervals themselves. O Note that if this operation is to be performed repeatedly for the same poset, " then it is more efficient to use  toIsoClasses' poset5, which memoizes the isomorphism class lookup table. Given a poset,  toIsoClasses' posetK is the linear map from the incidence Hopf algebra of the poset to itself, \ in which each interval is mapped to (the minimal representative of) its isomorphism class. EsThe incidence algebra of a poset is the free k-vector space having as its basis the set of intervals in the poset, < with multiplication defined by concatenation of intervals. x The incidence algebra can also be thought of as the vector space of functions from intervals to k, with multiplication A defined by the convolution (f*g)(x,y) = sum [ f(x,z) g(z,y) | x <= z <= y ]. FGHIJKLMNOP  -  !"# !"QRSTUVWXYZ[\]^_`abcdefghij ! " !  !".#_The special linear group SL(n,Fq), generated by elementary transvections, returned as matrices $DThe projective special linear group PSL(n,Fq) == A(n,Fq) == SL(n,Fq)/Z, 7 returned as permutations of the points of PG(n-1,Fq). 4 This is a finite simple group provided n>2 or q>3. %5The symplectic group Sp(2n,Fq), returned as matrices &AThe projective symplectic group PSp(2n,Fq) == Cn(Fq) == Sp(2n,Fq)/Z, 8 returned as permutations of the points of PG(2n-1,Fq). > This is a finite simple group for n>1, except for PSp(4,F2). kl#m$n%&opqrstuv#$%&#$%&/'()*7'()*wxyz{|}~)*'('(()**0 +,-./01234>Generators for G2(3), a finite simple group of order 4245696, D as a permutation group on the 702 unit imaginary octonions over F3 &+,-./01234 +,./0123-4 +,,-./012344567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   H 4 5                !"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLHM;NOPQRSTUVVWLXYZ[GH\]^_`abcdefNghQijklmnopqrstuvwxy<z{|}~_`}  ;!!"""""""########$$$$$$$$$$%@%C%E%%%%%%%%%%%%%%&&&p&&&&&&&&&''L''''L'''''''''''''''''((Y((X))))))))))))))))))*****++++++++++++L++++,,, , , , , ,,,,,----;-L-X-Y-Z-....///5/50000O0P000 0!0"#H$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRST1U1V1W1X1Y1Z1[1\]^_`abcdefghijklmnopiqTrstuvwxyz{|}~                 $ %                                  r           #                      (             22222222 2 2 2 2 22222222222T222222222 2!  " # $ % & ' ( ) * + ,  ~-./01234567Q89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^U_`abcdefghijklmnJopqrstuvwxyz@{WU|}~qgNOPVUUcbe3H3g3i3k3#33l33789Qi@UZY^TVUUNOPVUbeOPQ    7 8 9           !!!!!!!!!!!!!!!!!!q!!!!!!""""""""""""""""""""""""""""""""""" # ##### ##### # ###$$$$$$$$$$$$%%%%%%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([(\(](^(_(`(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){)|)))})~))))*********++++++++++++\+++++++++++++m++,,,,,,,,,,,,---k-----------------------............/6//////q/r//////////////////////////////G/////////////0a000H00000000000000000 0 0 0 0 000HaskellForMaths-0.3.3Math.Combinatorics.DigraphMath.Algebras.VectorSpaceMath.Algebras.TensorProductMath.Algebras.Structures"Math.Algebra.Group.StringRewriting#Math.Algebra.Group.PermutationGroupMath.Algebra.Group.SchreierSims%Math.Algebra.Group.RandomSchreierSimsMath.Algebra.Group.SubquotientsMath.Combinatorics.GraphMath.Algebra.Group.CayleyGraphMath.Combinatorics.GraphAuts"Math.QuantumAlgebra.TensorCategoryMath.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.TensorAlgebraMath.Algebras.CommutativeMath.Algebras.AffinePlaneMath.Algebras.GroupAlgebraMath.Algebras.LaurentPolyMath.Algebras.MatrixMath.Algebras.NonCommutativeMath.Algebras.QuaternionsMath.Algebras.TensorAlgebra%Math.Projects.KnotTheory.LaurentMPolyMath.Projects.KnotTheory.Braid&Math.Projects.KnotTheory.TemperleyLieb%Math.Projects.KnotTheory.IwahoriHecke"Math.QuantumAlgebra.OrientedTangle Math.QuantumAlgebra.QuantumPlaneMath.QuantumAlgebra.TangleMath.Algebra.LinearAlgebra!Math.Combinatorics.FiniteGeometryMath.Combinatorics.Design'Math.Combinatorics.StronglyRegularGraphMath.Combinatorics.HypergraphMath.Combinatorics.LatinSquaresMath.Combinatorics.Poset#Math.Combinatorics.IncidenceAlgebraMath.Projects.RootSystem&Math.Projects.ChevalleyGroup.Classical$Math.Projects.MiniquaternionGeometry(Math.Projects.ChevalleyGroup.ExceptionalMath.Common.ListSetMath.Projects.Rubik#Math.Algebra.NonCommutative.GSBasisDigraphDGisDagIso isoRepDAGDualTrivialEBasisEVectVzerovadd<+>sumvneg<->smultL*>smultR<*nflinearwrapunwrapdualTensorDSumi1i2coprodfp1p2prodfdsumedsumftetfassocLassocRunitInLunitOutLunitInRunitOutRtwistdistrLundistrLdistrRundistrRevreifyComodulecoactionModuleactionMonoidCoalgebraMC SetCoalgebraSC HopfAlgebraantipode Bialgebra CoalgebracounitcomultAlgebraunitmultMonmunitmmultunit'counit'SGenSrewrite knuthBendixnfselts PermutationP.^-^p^-~^.^^-^^_C_S_AorderorderSGS conjClassRepssubgpsisNormal normalSubgps quotientGp//sgsisMember initProdRepl nextProdRepl isMemberSGS isTransitive!transitiveConstituentHomomorphism blockSystemsblockSystemsSGS isPrimitiveisPrimitiveSGSblockHomomorphismGraphGcombinationsOfgraph nullGraph nullGraph'ck fromDigits fromBinarydiametergirthkneser cayleyGraphP cayleyGraphS graphAutsCob2BraidSymmetricGroupoidWeakTensorCategoryassoclunitrunitStrictTensorCategoryTensorCategorytunittobtarCategoryObArid_sourcetarget>>>T97T89T83T79T73T71T67T61T59T53T47T43T41T37T31T29T23T19T17T13T11T7T5T3T2TOneTZeroTMinus1M IntegerAsTypevalueElimGrevlexGlexLexMonomialconvertMsupportMF97F89F83F79F73F71F67F61F59F53F47F43F41F37F31F29F23F19F17F13F11F7F5F3F2 FiniteFieldeltsFqbasisFqFpQf2f3f5f7MPolyMPvarabdstuvwxyzx0x1x2x3toLextoGlex toGrevlextoElimgb QSqrtMinus5 QSqrtMinus3 QSqrtMinus2 QSqrtMinus1QSqrt7QSqrt5QSqrt3QSqrt2SqrtF32 ConwayF32F27 ConwayF27F25 ConwayF25F16 ConwayF16F9ConwayF9F8ConwayF8F4ConwayF4ExtensionFieldExtPolynomialAsTypepvalueUPolyUP quotRemUP conjugate InvertibleinvVarZYXNPolyNPWeylGensDBasis DivisionBasisdividesBdivBpowersGlexPoly GlexMonomialbind%%SL2ABCDCBAXY GroupAlgebraip LaurentPolyLaurentMonomialLMM3E3Mat2'E2'Mat2E2divMNCPolyNonComMonomialNCM QuaternionHBasisKJIOneijone'i'j'k'TensorCoalgebraTCExteriorAlgebraSymmetricAlgebraSym TensorAlgebraTAinjectTA injectTA'liftTAliftTA'fmapTAfmapTA'bindTAbindTA'toSym injectSym injectSym'liftSymliftSym'fmapSymfmapSym'bindSymbindSym'toExt injectExt injectExt'liftExtliftExt'fmapExtfmapExt'bindExtbindExt' projectTCcoliftTCcobindTC LaurentMPolyLP BraidGensLPQTemperleyLiebGensIwahoriHeckeGensTOrientedTangleHorizDirToRToLOrientedMinusPlusSL2qM2qAq02Aq20 TangleRepTanglecapcupoverunderkauffman<.><*><<+>><<->><<*>>*>><<*><*>>iMxjMxzMxinversereducedRowEchelonFormdet ZeroOneStarStarZeroptsAGptsPGflatsPGflatsAGlinesPGlinesAGincidenceGraphPGincidenceGraphAGDesignincidenceMatrixag2pg2 derivedDesign pointResidual blockResidualincidenceGraph designAutsm24m24sgsm23sgsm22sgss_5_8_24s_4_7_23s_3_6_22s_5_6_12s_4_5_11m12m12sgsm11sgs DesignVertex HypergraphH isUniformisPartialLinearSpaceisProjectivePlaneisProjectivePlaneTriisProjectivePlaneQuadisGeneralizedQuadrangleisConfiguration fanoPlane heawoodGraphdesarguesConfigurationdesarguesGraphpappusConfiguration pappusGraph coxeterGraphtutteCoxeterGraph findLatinSqs isLatinSq isOrthogonalisMOLSfromProjectivePlanePosetchainN antichainNposetDposetBposetPposetLsubposetdsumdprod hasseDigraphreachabilityPosetisOrderPreserving isOrderIsoIntervalIvintervalIsoClassesunitIAbasisIAzetaIAmuIAinvIA numChainsIAnumMaximalChainsIA toIsoClasses toIsoClasses'TypeFbasisEltsllsp2s2J9OctonionOi0i3i4i5i6g2_3toSetverticesedges predecessors successorsadjLists digraphIsos1 digraphIsos2heightPartitionDAGisDAGdagIsosperms isoRepDAG1 isoRepDAG2 isoRepDAG3termscoeffzeroaddmergeee1e2e3e'e1'e2'e3'zerofsumfdelta$fCoalgebrak(,) $fAlgebrak(,)$fCoalgebrakEither$fAlgebrakEither*.rewrite1splitSubstring findOverlap knuthBendix1ordpairshortlex knuthBendix2merge knuthBendix3s_s1s3_S'tri_D toListSet isListSetunion intersect\\symDiffdisjointisSubsetrotateL fromPairs fromPairs'toPairsfromListsupp fromCyclestoCyclescycleOfparitysignorderEltcommclosureSclosureorbitorbitPorbitVorbitBorbitEorbits_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"transitiveConstituentHomomorphism' minimalBlockblockHomomorphism'intersectionNormalClosurecentralizerSymTranssetpowerset isSetSystemisGraphtoGraphfromIncidenceMatrixadjacencyMatrixfromAdjacencyMatrixkbkb'q'q tetrahedroncube octahedron dodecahedron icosahedronto1npetersen complementinducedSubgraph lineGraph lineGraph'sizevalency valenciesvalencyPartition regularParam isRegularisCubicnbrs findPathsdistance findCyclesdistancePartition component isConnectedjohnsonbipartiteKneser desargues1gp petersen2prismdurer mobiusKantor dodecahedron2 desargues2cayleyDigraphPcayleyDigraphSfromTranspositions fromTrans bubblesorttoTranstoTranspositions inversionsisVertexTransitiveisEdgeTransitive->^isArcTransitiveisArcTransitive'findArcsisnArcTransitiveis2ArcTransitiveis3ArcTransitiveisDistanceTransitiverefinerefine' isGraphAut graphAuts1 graphAuts2 graphAuts3 isSingleton graphAuts4eqgraph toEquitable toEquitable2 splitNumNbrs dfsEquitable incidenceAuts graphIsosisIsofr rubikCube cornerFaces edgeFaceskerCornerFaces imCornerFaces kerEdgeFaces imEdgeFaces cornerBlocks edgeBlockskerCornerBlocksimCornerBlocks kerEdgeBlocks imEdgeBlocks_U_u_dbf_R_r_l_Lud_B_b_f_FSeqParComultCounitMultUnitIdOBABOSASdiffsdegMdividesMproperlyDividesMlcmMgcdMcoprimeM numeratorQ denominatorQextendedEuclid primitiveEltcharf11f13f17f19f23f29f31f37f41f43f47f53f59f61f67f71f73f79f83f89f97cmpTerm mergeTermscollectx_ convertMPvarLexvarElimltlmdegmulTdivTdividesTproperlyDividesTlcmT.* quotRemMPdivModMPdivMPmodMPinjecttoMonictoZsubstsupportsPolyisGBgb1pairWithreducegb2pairs!gb2bgb3bcmpFstmergeBygb4bsugar cmpNormalcmpSuggb3gb4showUPtoUPolyconvertmonomialmodUPextendedEuclidUP/>embedpolysf4a4f8a8f9a9f16a16f25a25f27a27f32a32 frobeniusAutdegreesqrt2sqrt3sqrt5sqrt7 sqrtminus2 sqrtminus3 sqrtminus5lc quotRemNPremNPremNP2gb'gb2'mbasisQAe_e4dim tensorBasis extRelationsextnf exteriorBasis symRelationssymnfsymmetricBasis weylRelationsweylnf weylBasisd_d1d2d3weylRelations'weylnf' weylBasis'glexVarsl2VarlvartoMat2toEB2toEBncm signedSort coliftTC'degLM denominatorLMlcmLMdivLM quotRemLPreduceLP denominatorLPsqrtvar^^^s4writhek3_1k4_1k5_1k7_1d' tlRelationsdimTLtlnftlBasistr'tra' fromBraidjonest_t1t2t3t4z' ihRelationsdimIHihnfihBasistau'tauhomflymhomfly'homfly''coeffsjones'OTParTSeqTXMinusXPlusCupTCapTIdTidVidV'evalVevalV'coevalVcoevalV'lambdac'testcc'mumu'capRLcapLRcupRLcupLRxplusxminusyplusyminustplustminuszpluszminusoloopotrefoil otrefoil'qvardetqaq20aq02m2qsl2qybUnderTOverTlooptrefoilloopTtrefoilTfMatrixfMatrix'idMxinverse1inverse2rowEchelonFormkernel kernelRREpnfispnf closureAGlineAG closurePGlinePGqtorialqnomial numFlatsPG numFlatsAGqtorialsqnomialsrrefslinesAG1linesAG2orderGLorderAfforderPGLheawooddesigntoDesignisValidpointsblocksnoRepeatedBlocks tDesignParamsfindvk findlambda designParams isStructureisDesign is2DesignisSquare subsetDesign pairDesign flatsDesignPGpg flatsDesignAGag paleyDesigncomplementaryDesign isDesignAut designAuts1 alphaL2_23 betaL2_23 gammaL2_23l2_23deltaM24octad s_5_8_24' alphaL2_11 betaL2_11 gammaL2_11l2_11deltaM12hexad srgParamsisSRGt'l2l2' paleyGraphclebschclebsch'clebsch2triplesheptads+^+^^hoffmanSingletonhoffmanSingleton' inducedA7hsA7gewirtzgewirtz'higmanSimsGraphhigmanSimsGraph' inducedM22 higmanSimsM22_HS2_HSspswitchschlafli schlafli' mcLaughlin mcLaughlin'_McL2_McL hypergraph toHypergraphsame fromGraph fromDesigngriddualGridisGenQuadrangle'duads synthemesintersectionGraph isOneOfEachincidenceGraphLSincidenceGraphLS'findMOLSisOAfromLSfromMOLSgraphOA srgParamsOAimplies isReflexiveisAntisymmetricisPosetposet intervalsintervaldividesdivisors partitions isRefinementintervalPartitions isIntervalintervalPartitions2 subspacesisZeroinSpanRE isSubspace orderIsos01 orderIsos orderAuts1isLinextlinexts$fAlgebrakIntervalivPoset intervalIsos isIntervalIsointervalIsoMapmuIA1invIA1invIA'etaIAmuCmuBmuL simpleSystem weylPerms weylMatriceswMx cartanMatrixsetDiagdynkinFromCartan dynkinDiagramcoxeterFromDynkin coxeterMatrixfromCoxeterMatrixfromCoxeterMatrix2coxeterPresentation eltsCoxeter poincarePolyelemMxlieMult+|++-+form rootSystemnumRoots orderWeyl factorialnumPtsAGnumPtsPGelemTransvectionorderLorderS2orderS omegaevenomegaoddoconjnorm squaresF9j9autJ9autAautBautCautsJ9conj'isAutisReal isComplexprop_NearFieldprop_NearFieldF9prop_NearFieldJ9ptsPG2orthogonalLinesPG2 rightLinesPG2 leftLinesPG2phiphi'collineationsPhi liftToGraphomega0omegaomega2collineationsOmegaomegaDomegaD1omegaD2psipsi2collineationsPsi collinear isQuadrangle concurrentisQuadrilateralisOval findOvals1findQuadrangles findOvalstoListexposesqnorm antiCommutes octonionsisUnitunitImagOctonionsautFrom%^alpha3beta3gamma3sgamma3alpha3'beta3'gamma3'alpha4beta4gamma4sgamma4alpha4'beta4'gamma4'