{"@context":"https://w3id.org/codemeta/3.0","@type":"SoftwareSourceCode","identifier":"pkg:hackage/Operads","name":"Operads","description":"This is an implementation of the operadic Buchberger algorithm from Vladimir Dotsenko \u0026\nAnton Khoroshkin: Groebner bases for operads (arXiv:0812.4069).\n\nIn writing this package, invaluable help has been given by Vladimir Dotsenko and Eric Hoffbeck.\n\nThe user is recommended to run this from within the GHC interpreter\nfor exploration, and to write small Haskell scripts for batch\nprocessing. We hope herewithin to give enough of an overview of the\navailable functionality to help the user figure out how to use the\nsoftware package.\n\nA declaration of a new variable is done in a Haskell script by a\nstatement on the form\n\nand in the interpreter by a statement on the form\n\nUsing these, the following instructions should help get you started. I will be writing\nthe instructions aiming for use in the interpreter, for quick starts.\n\nIt is possible to force types by following a declaration by :: and the type signature\nyou'll which. This enables you, for instance, to pick a ground ring without having to set\ncoefficients explicitly - see the examples below.\n\nNote that the Buchberger algorithm in its current shape expects at least a division ring\nas scalar ring.\n\nThe expected workflow for a normal user is as follows.\n\nwrite the generators of the operadic ideal using corolla and leaf to construct\nbuildingblocks and nsCompose, shuffleCompose and symmetricCompose to assemble\nthem into trees. The trees, subsequently, may be assembled into tree polynomials by\n\npicking an ordering. The orderings available are\nPathPerm, RPathPerm, PathRPerm, RPathRPerm,\nPermPath, RPermPath, PermRPath and RPermRPath, distinguished by reversal\nof order for either the path comparison or the permutation comparison, as well as\nby whether path or permutation comparison takes precedence.\n\nassembling trees and coefficients into an element of the free operad, using + for\naddition of operadic elements and .*. for scalar multiplication.\n\nUseful functions for doing this includes, furthermore:\n\nExample:\n\nNote that while the Haskell compiler in general is very skilled at guessing types of objects,\nthe system guessing will give up if the type is not well defined. There are several different\nmonomial orders allowed, and they are encoded in the type system -- hence the need to annotate\nthe instantiation of elements in the free operad with appropriate types.\n\nassemble all generators into a list. Lists are formed by enclosing the elements,\nseparated by commas, in square brackets. Lists must have identical type on all its\nelements - hence, for instance, you cannot have operadic elements with different monomial\norderings in the same list.\n\nExample:\n\nrun the algorithm on your basis and wait for it to finish. The entry point to the Buchberger\nalgorithm is, not surprisingly, operadicBuchberger.\n\nExample:\n\nThe output of operadicBuchberger, if it finishes, is a finite Gröbner basis for the ideal spanned\nby the original generators. If this is quadratic then the operad presented by this ideal is Koszul -\nthis may be tested with something like:\n\nIf you wish to inspect elements yourself, the recommended way to do it is by using the pP function,\nwhich outputs most of the interesting elements in a human-readable format. For objects that don't work\nwith pP, just writing the variable name on its own will print it in some format.\n\nThe difference here is related to the ability to save computational states to disk. There are two\ndifferent functions that will represent a tree or an element of an operad as a String: show and pp.\nUsing the former guarantees (with the same version of the source code) that the data can be read back\ninto the system and reused later one; whereas using pp will build a human readable string.","version":"1.0","softwareVersion":"1.0","license":"https://spdx.org/licenses/BSD-3-Clause","url":"http://math.stanford.edu/~mik/operads","keywords":["bsd3","library","math","Propose Tags"],"maintainer":[{"@type":"Person","name":"MikaelVejdemoJohansson"}],"author":[{"@type":"Person","name":"MikaelVejdemoJohansson"}],"copyrightHolder":[{"@type":"Person","name":"MikaelVejdemoJohansson"}],"dateCreated":"2009-04-27","dateModified":"2009-08-14","datePublished":"2009-08-14","copyrightYear":2009,"downloadUrl":"https://hackage.haskell.org/package/Operads-1.0/Operads-1.0.tar.gz","applicationCategory":"hackage","runtimePlatform":"hackage","sameAs":["https://hackage.haskell.org/package/Operads"]}