# Packages

We encourage the creation of packages that simplify non-trivial bodies of computational methods, likely to be of interest to a community of researchers. We will be glad to distribute such packages, submitted and duly checked and approved, with future releases of the Macaulay2 system. The name of the package and functions in it should follow Macaulay2 naming conventions. To the extent possible they should make the purpose of the package clear to the casual browser. In particular, we encourage explanatory naming of functions, even if the names are relatively long; the users can always create shortcuts or use dynamic completion or abbreviation completion in emacs to speed typing.

- the packages directory in the source code repository
- the README file there with advice about adding packages
- using Git with Macaulay2
- Package Writing Style Guide

## Packages included with *Macaulay2* version 1.12

- AbstractToricVarieties, links abstract simplicial (normal) toric varieties to Schubert2
- AdjointIdeal, Adjoint ideals of plane curves and related computations
- AlgebraicSplines, Package for splines on simplicial complexes, polytopal complexes, and graphs
- AnalyzeSheafOnP1, Decompose a Sheaf on P1
- BeginningMacaulay2, Mathematicians' Introduction to Macaulay2
- Benchmark, standard Macaulay2 benchmarks
- Bertini, Interface to Bertini
- BGG, Bernstein-Gelfand-Gelfand correspondence
- BIBasis, Involutive Pommaret basis in a Boolean ring
- BinomialEdgeIdeals, Package for computations with binomial edge ideals
- Binomials, Specialized routines for binomial ideals
- BoijSoederberg, betti diagram operations useful for investigating the Boij-Soederberg conjectures
- Book3264Examples, Examples to accompany the eponymous book by Eisenbud and Harris
- BooleanGB, Groebner Bases for Ideals in Boolean Polynomial Quotient Ring
- Browse, a method for browsing and examining Macaulay2 data structures
- Bruns, make a 3-generator ideal with an "any" resolution
- ChainComplexExtras, Some additional ChainComplex Functions.
- ChainComplexOperations, sym2, wedge2, chi2 of a ChainComplex
- CharacteristicClasses, Computes CSM classes, Segre classes and the Euler Char. for some Subschemes of Smooth Complete Toric Varieties
- Chordal, A package that exploits chordal structure
- Classic, a classic Macaulay parser
- CohomCalg, interface to CohomCalg software for computing cohomology of torus invariant divisors on a toric variety
- CoincidentRootLoci, A package for computations with coincident root loci
- CompleteIntersectionResolutions, Analyzing Resolutions over a Complete Intersection
- Complexes, Chain complexes
- ConformalBlocks, for conformal block divisors
- ConvexInterface, Interface to Convex
- ConwayPolynomials, a database of Conway polynomials
- CorrespondenceScrolls, CorrespondenceScrolls
- Cremona, Some computations for rational maps between projective varieties
- Cyclotomic, Routines for cyclotomic fields
- Depth, aids in computations related to depth
- DGAlgebras, Data type for DG algebras
- Divisor, a package for working with Weil divisors
- Dmodules, functions for computations with D-modules
- EdgeIdeals, a package for edge ideals.
- Elimination, a package for elimination of variables
- EliminationMatrices, Package for computing resultants
- EllipticCurves, Group law on elliptic curves (and counting points with brute force methods)
- EllipticIntegrals, uniformization of elliptic curves
- EngineTests, a test suite for the Macaulay2 engine
- EnumerationCurves, Enumeration of rational curves via torus actions
- EquivariantGB, Equivariant Groebner bases and related algorithms
- ExampleSystems, examples of polynomial systems
- ExteriorIdeals, A Macaulay2 package for manipulating monomial ideals over exterior algebra
- FiniteFittingIdeals, A package for computing Fitting ideals of finite modules
- FirstPackage, an example Macaulay2 package
- FormalGroupLaws, Package to deal with commutative formal group laws
- FourierMotzkin, convex hulls and polar cones
- FourTiTwo, Interface to 4ti2
- GenericInitialIdeal, find the generic initial ideal of a given ideal
- gfanInterface, Interface to Anders Jensen's Gfan software
- GradedLieAlgebras, computations in graded Lie algebras
- GraphicalModels, A package for discrete and Gaussian graphical models
- Graphics, Create graphics
- Graphs, Package for processing graphs and directed graphs (digraphs)
- GroebnerWalk, Compute Groebner bases via the Groebner walk
- HigherCIOperators, Higer CI operators
- HighestWeights, decompose free resolutions and graded modules with a semisimple Lie group action
- HodgeIntegrals, Hodge integrals on the moduli space of curves
- HyperplaneArrangements, hyperplane arrangements
- IntegralClosure, Integral Closure
- InvariantRing, a package to construct the invariant ring of a finite group
- InverseSystems, equivariant Macaulay inverse systems
- InvolutiveBases, Methods for Janet bases and Pommaret bases in Macaulay 2
- K3Carpets, K3 double structure on scrolls
- Kronecker, Kronecker and rational normal forms
- KustinMiller, Unprojection and the Kustin-Miller complex construction
- LatticePolytopes, A package for computations with lattice polytopes
- LexIdeals, A Macaulay 2 package for manipulating lexicographic-type monomial ideals
- Licenses, licensing of Macaulay2
- LieTypes, Common types for Lie groups and Lie algebras
- LLLBases, a package for computing Lenstra-Lenstra-Lovasz bases
- LocalRings, Operations over a local ring (R, P)
- M0nbar, calculations for divisors and F-curves on the moduli space of stable n-pointed genus zero curves
- Macaulay2Doc, Macaulay2 documentation
- MapleInterface, Interface to Maple
- Markov, Markov ideals, arising from Bayesian networks in statistics
- Matroids, a package for computations with matroids
- MCMApproximations, MCM Approximations and Complete Intersections
- MinimalPrimes, minimal primes of an ideal
- Miura, The Arithmetic of Miura Curves
- ModuleDeformations, Computing versal deformations of maximal Cohen-Macaulay modules
- MonodromySolver, solving polynomial systems via monodromy
- MonomialAlgebras, Monomial algebras
- MultiplierIdeals, multiplier ideals, log canonical thresholds, and jumping numbers
- MultiplierIdealsDim2, Package for computing MI in 2-dimensional rings
- NAGtypes, Common types used in Numerical Algebraic Geometry
- Nauty, Interface to nauty
- NautyGraphs, Interface to nauty (Graphs fork)
- NCAlgebra, Data types for Noncommutative algebras
- NoetherNormalization, place an ideal in Noether normal position
- NonminimalComplexes, Obtaining the non-minimal strands of a non-minimal resolution of a homogeneous module
- Normaliz, a package to use Normaliz in Macaulay 2
- NormalToricVarieties, normal toric varieties
- NumericalAlgebraicGeometry, Numerical Algebraic Geometry
- NumericalCertification, certifying solutions to square polynomial systems (Smale's alpha test)
- NumericalHilbert, numerically compute local dual space and Hilbert functions
- NumericalImplicitization, NumericalImplicitization
- NumericalSchubertCalculus, a Macaulay2 package for using numerical methods in Schubert Calculus
- NumericSolutions, solving systems of polynomial equalities
- OldPolyhedra, A package for computations with convex polyhedra
- OldToricVectorBundles, A package for computations with vector bundles on toric varieties
- OpenMath, OpenMath for Macaulay2
- PackageCitations, citation of Macaulay2 packages
- PackageTemplate, an example Macaulay2 package
- Parametrization, Rational parametrization of rational plane curves and related computations
- Parsing, a framework for creating recursive descent parsers
- Permanents, Compute the permanents of a matrix
- PHCpack, Interface to PHCpack
- PhylogeneticTrees, invariants for group-based phylogenetic models
- PieriMaps, computations of matrices between representations of the general linear group based on the Pieri formulas
- Points, computing with sets of points
- Polyhedra, A package for computations with convex polyhedra
- Polymake, a package for interfacing with polymake
- Posets, Package for processing partially ordered sets (posets)
- PrimaryDecomposition, functions for primary decomposition
- PruneComplex, Prunes a given complex over R, R_m, and R_p
- Pullback, pullback of rings
- PushForward, push forwards of finite ring maps
- QthPower, An implementation of the Qth-Power algorithm for computing integral closures
- QuillenSuslin, QuillenSuslin
- RandomCanonicalCurves, Construction of random smooth canonical curves up to genus 14
- RandomComplexes, random complexes over fields or the integers
- RandomCurves, Construction of random curves
- RandomCurvesOverVerySmallFiniteFields, computation of general canonical curves of genus <= 15 over fields with small characteristic
- RandomGenus14Curves, Construction of random smooth curves of genus 14
- RandomIdeals, a package for creating random ideals of various sorts
- RandomMonomialIdeals, A package for generating Erdos-Renyi-type random monomial ideals
- RandomObjects, a framework for making random objects in algebraic geometry
- RandomPlaneCurves, Construction of random plane curves
- RandomSpaceCurves, Construction of random smooth space curves
- RationalMaps, A package for working with rational maps.
- RationalPoints, find the common zeroes of a set of polynomials with coefficients in a finite field
- ReactionNetworks, reaction networks
- ReesAlgebra, Rees algebras
- ReflexivePolytopesDB, simple access to Kreuzer-Skarke database of reflexive polytopes of dimensions 3 and 4
- Regularity, computes the Castelnuovo-Mumford regularity of a given homogeneous ideal
- RelativeCanonicalResolution, computation of the relative canonical resolution for g-nodal canonical curves with a fixed g^1_k
- ResidualIntersections, Package for studying conditions associated to Residual Intersection theory
- Resultants, Resultants, discriminants, and Chow forms
- RunExternalM2, run Macaulay2 functions outside the current Macaulay2 process
- Schubert2, computations of characteristic classes for varieties without equations
- SchurFunctors, computations of Schur modules and maps between them
- SchurRings, representation rings of general linear groups and of symmetric groups
- SCSCP, SCSCP for Macaulay2
- SectionRing, computing the section ring of a Weil Divisor
- Seminormalization, a package for computing seminormalization of rings
- Serialization, reversible conversion of all Macaulay2 objects to strings
- SimpleDoc, a simple documentation function
- SimplicialComplexes, simplicial complexes
- SimplicialDecomposability, various decomposability routines for simplicial complexes
- SLnEquivariantMatrices, Ancillary file to the paper "A construction of equivariant bundles on the space of symmetric forms"
- SLPexpressions, Straight Line Programs and Algebraic Circuits
- SpaceCurves, Generation of space curves
- SpectralSequences, spectral sequences
- SRdeformations, Deformations of Stanley-Reisner rings and related computations
- StatePolytope, for computing the state polytope of an ideal
- StronglyStableIdeals, studying strongly stable ideals related to Hilbert polynomials
- Style, style sheets and images for the documentation
- SVDComplexes, SVD (singular value decomposition) of a complex over the reals and related functions
- SymbolicPowers, Calculations involving symbolic powers
- SymmetricPolynomials, symmetric polynomials
- TangentCone, tangent cones
- TateOnProducts, Tate resolutions on products of projective spaces
- TensorComplexes, multilinear algebra with labeled bases
- TestIdeals, A package for calculations of singularities in positive characteristic
- Text, documentation and hypertext
- Topcom, interface to a small part of topcom
- TorAlgebra, Classification of local rings based on multiplication in homology
- ToricTopology, Toric topology
- ToricVectorBundles, A package for computations with vector bundles on toric varieties
- TriangularSets, A package for triangular decompositions of ideals
- Triplets, Triplets of degree sequences, and associated Betti diagrams and cohomology tables
- Tropical, A package for doing computations in tropical geometry
- Units, units conversion and physical constants
- VectorFields, a package for computations with vector fields
- VersalDeformations, A package for calculating versal deformations and local Hilbert schemes
- Visualize, Visualize
- WeylGroups, Root systems and Weyl groups
- XML, an XML parser

## Packages and code available elsewhere

- CSM-A Macaulay2 package for characteristic classes of singular varieties, by Paolo Aluffi.
- InstantonInvariants, Computation of SU(2)-instanton invariants, by Irena Swanson, Elizabeth Gasparim, and Thomas Köppe.
- WeylGroups, root systems, Weyl groups and Bruhat order, by B. Calmès and V. Petrov
- FormalGroupLaws, formal group laws (up to a definable precision) and the Lazard ring, by B. Calmès and V. Petrov
- CohomologyOfBorelVarieties, cohomology of complete flag varieties, by B. Calmès and V. Petrov
- Graphics, svg graphics, by B. Calmès and V. Petrov
- ResSing, regular models of curves, by Suchandan Pal

## Instantly downloadable packages

Various packages written by others could formerly be installed with the "getPackage" command of Macaulay2, but we have eliminated that feature, so the list of them no longer appears here.