# 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.9.2

- AdjointIdeal, Adjoint ideals of plane curves and related computations
- AnalyzeSheafOnP1, Decompose a Sheaf on P1
- BGG, Bernstein-Gelfand-Gelfand correspondence
- BIBasis, Involutive Pommaret basis in a Boolean ring
- BeginningMacaulay2, Mathematicians' Introduction to Macaulay2
- Benchmark, standard Macaulay2 benchmarks
- Bertini, Interface to Bertini
- 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.
- CharacteristicClasses, Computes CSM classes, Segre classes and the Euler Char. for some Subschemes of Smooth Complete Toric Varieties
- Classic, a classic Macaulay parser
- CodepthThree, Classification of codepth 3 local rings based on multiplication in homology
- CompleteIntersectionResolutions, Analyzing Resolutions over a Complete Intersection
- ConformalBlocks, for conformal block divisors
- ConvexInterface, Interface to Convex
- ConwayPolynomials, a database of Conway polynomials
- Cremona, Some computations for rational maps between projective varieties
- Cyclotomic, Routines for cyclotomic fields
- DGAlgebras, Data type for DG algebras
- Depth, aids in computations related to depth
- 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
- EnumerationCurves, Enumeration of rational curves via torus actions
- EquivariantGB, Equivariant Groebner bases and related algorithms
- ExampleSystems, examples of polynomial systems
- FiniteFittingIdeals, A package for computing Fitting ideals of finite modules
- FirstPackage, an example Macaulay2 package
- FormalGroupLaws, Package to deal with commutative formal group laws
- FourTiTwo, Interface to 4ti2
- FourierMotzkin, convex hulls and polar cones
- GenericInitialIdeal, find the generic initial ideal of a given ideal
- GraphicalModels, A package for discrete and Gaussian graphical models
- Graphics, Create graphics
- Graphs, Package for processing graphs and directed graphs (digraphs)
- 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
- InvolutiveBases, Methods for Janet bases and Pommaret bases in Macaulay 2
- Kronecker, Kronecker and rational normal forms
- KustinMiller, Unprojection and the Kustin-Miller complex construction
- LLLBases, a package for computing Lenstra-Lenstra-Lovasz bases
- LatticePolytopes, A package for computations with lattice polytopes
- LexIdeals, A Macaulay 2 package for manipulating lexicographic-type monomial ideals
- LieTypes, Common types for Lie groups and Lie algebras
- LocalRings, Local rings at the origin
- M0nbar, calculations for divisors and F-curves on the moduli space of stable n-pointed genus zero curves
- MCMApproximations, MCM Approximations and Complete Intersections
- Macaulay2Doc, Macaulay2 documentation
- MapleInterface, Interface to Maple
- Markov, Markov ideals, arising from Bayesian networks in statistics
- MinimalPrimes, minimal primes of an ideal
- Miura, Miura: Divisor Class Group Computation
- ModuleDeformations, Computing versal deformations of maximal Cohen-Macaulay modules
- MonomialAlgebras, Monomial algebras
- MultiplierIdeals, multiplier ideals, log canonical thresholds, and jumping numbers
- MultiplierIdealsDim2, Package for computing MI in 2-dimensional rings
- MultipolynomialResultants, Resultants and discriminants for multivariate polynomials
- NAGtypes, Common types used in Numerical Algebraic Geometry
- Nauty, Interface to nauty
- NautyGraphs, Interface to nauty (Graphs fork)
- NoetherNormalization, place an ideal in Noether normal position
- NormalToricVarieties, normal toric varieties
- Normaliz, a package to use Normaliz in Macaulay 2
- NumericalAlgebraicGeometry, Numerical Algebraic Geometry
- NumericalHilbert, numerically compute local dual space and Hilbert functions
- NumericalSchubertCalculus, a Macaulay2 package for using numerical methods in Schubert Calculus
- OpenMath, OpenMath for Macaulay2
- PHCpack, Interface to PHCpack
- 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
- 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
- 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
- RandomCurves, Construction of random curves
- RandomGenus14Curves, Construction of random smooth curves of genus 14
- RandomIdeals, a package for creating random ideals of various sorts
- 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
- ReesAlgebra, Rees algebras
- Regularity, computes the Castelnuovo-Mumford regularity of a given homogeneous ideal
- ResidualIntersections, Package for studying conditions associated to Residual Intersection theory
- RunExternalM2, run Macaulay2 functions outside the current Macaulay2 process
- SCSCP, SCSCP for Macaulay2
- SLPexpressions, Straight Line Programs and Algebraic Circuits
- SRdeformations, Deformations of Stanley-Reisner rings and related computations
- 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
- Serialization, reversible conversion of all Macaulay2 objects to strings
- SimpleDoc, a simple documentation function
- SimplicialComplexes, simplicial complexes
- SimplicialDecomposability, various decomposability routines for simplicial complexes
- StatePolytope, for computing the state polytope of an ideal
- Style, style sheets and images for the documentation
- SymmetricPolynomials, symmetric polynomials
- TangentCone, tangent cones
- TateOnProducts, Tate resolutions on products of projective spaces
- TensorComplexes, multilinear algebra with labeled bases
- Text, documentation and hypertext
- ToricTopology, Toric topology
- ToricVectorBundles, A package for computations with vector bundles on toric varieties
- Triplets, Triplets of degree sequences, and associated Betti diagrams and cohomology tables
- 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
- gfanInterface, Interface to A. Jensen's gfan package

## 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

The packages listed below were written by others and can be installed with the "getPackage" command of Macaulay 2.

Example:

getPackage "LDL"

Available packages:

- INTRO.html, 1291 bytes, April 12, 2016

- Kronecker/ -- Kronecker normal form of a matrix pencil, by Edward Carter.
- LDL/ -- LDL' factorization of a positive semidefinite matrix, by Helfried Peyrl.
- PushForward/ -- This package is missing from our version 1.5 distribution, but is required by the package Schubert2.
- StateTables/ -- building finite state machines, by Dan Grayson.
- Triplets/ -- "Triplets" is a package by Gunnar Floeystad to calculate: 1) Betti diagrams of triplets of pure free squarefree complexes, as introduced in math.AC/1207.2071, "Triplets of pure free squarefree complexes"; 2) hypercohomology tables associated to homology triplets, as given in math.AC/1212.3675, "Zipping Tate resolutions and exterior coalgebras".