**Overview:**

The goal of this package is to provide a basic framework for deformations of Stanley-Reisner rings, the deformations polytope, its tropical subcomplex and tropical mirror symmetry in general.

This is work in progress, many interesting pieces still missing and more testing is necessary. The efficiency and robustness of some of the pieces has to be improved.

See the *Macaulay2* package repository for new versions of this file.

All suggestions and contributions are welcome.

**Contents:**

This package so far consists of the following parts:

The first part provides a data structure for deformations of monomial ideals (including a toric grading). The class FirstOrderDeformation stores (and computes the dimension of) a big torus graded part of the vector space of first order deformations (specified by a Laurent monomial).

The second part gives an implementation of (not necessarily simplicial) embedded complexes and co-complexes and their correspondence to monomial ideals. The main focus here is on a flexible implementation, computing and storing data only as soon as it is needed. See Complex, CoComplex, Face.

The third part computes all first order deformations of Stanley-Reisner ideals using part one and two via the results of Klaus Altmann and Jan Arthur Christophersen who reduce the problem to links of faces of simplicial complexes. See deformationsFace and deform.

The fourth part gives functions to compute the first order deformations polytope (see PT1) and its tropical subcocomplex (see tropDef).

**What’ new:**

*Jul 13, 2010 (Version 0.52)*

Some changes to ensure compatibility with the current version of OldPolyhedra (1.1), in particular the method isSimplicial has been renamed to isSimp, as OldPolyhedra is now using the name name isSimplicial.

*Jan 28, 2010 (Version 0.51)*

Minor changes to ensure compatibility with the previous M2 version 1.2. Note that you will nevertheless need to install a more recent version of OldPolyhedra which also works with 1.2 (tested with 1.0.6).

*Oct 24, 2009 (Version 0.50)*

Added methods addCokerGrading(PolynomialRing,List) and raysPPn(List) to give the rays of the standard fan of weighted projective space. Fixed a bug in the multigrading.

*Oct 18, 2009 (Version 0.49)*

Fixed a problem in convHull (correspondence of P.polytopalFacets with the vertices of the dual). This was only a problem when using OldPolyhedra.m2.

*Oct 6, 2009 (Version 0.48)*

Resolved a compatiblity issue with the new version of the M2 package *OldPolyhedra*.

*Oct 3, 2009 (Version 0.47)*

Improvements to the documentation.

*Sept 20, 2009 (Version 0.46)*

Added a function hull to compute the positive hull of a list of vectors.

*Sept 8, 2009 (Version 0.45)*

Adjusted the methods using ConvexInterface.m2 to version 0.25 which now indexes the vertices instead of using coordinates. This improves the performance substantially.

Improved the computation of the dimension of a FirstOrderDeformation using a much smaller linear system of equations.

Fixed a bug in dim(Face).

Exported the symbol dualFace which stores the dual of a face to make this key available for the user.

convHull now stores in the faces their dimensions (see the key indices).

Added an Option file to convHull and PT1 to store the result in a file. convHull applied to a String reads a convex hull from a file.

Improved speed of globalSections when dealing with ideals in the Cox ring of projective space.

Added an optional key deform to complexes storing the associated deformations, see deform.

Added functions saveDeformations and loadDeformations to save to and load from a file the deformations associated to a Complex.

**Technical note:**

In the future some of the methods and keys may change their name.

At some point Complex and CoComplex will get a common ancestor.

**Installation:**

installPackage("SRdeformations")

**Options:**

Computations with polyhedra are used in this package so far in by following functions:

convHull -- The convex hull complex

globalSections -- The global sections of a toric divisor

which again are called by PT1, deform and deformationsFace. If deform and deformationsFace are used for Complexes inside a standard simplex, i.e., Stanley-Reisner ideals with the standard projective space grading, then they don’t rely on polyhedra computations.

There are two choices of M2 packages to be called for computations with polyhedra:

Works without additional configuration, but is not very fast.

It uses the M2 package *FourierMotzkin*.

To use *OldPolyhedra* do

loadPackage("SRdeformations",Configuration=>{"UseConvex"=>false})

This is the standard configuration, i.e., it is synonymous to

loadPackage("SRdeformations")

*ConvexInterface*:

This package has to be installed first, see its documentation for this.

It calls the Maple package Convex and is faster than OldPolyhedra, hence the perferable choice. If you want to do non-trivial examples you have to go for it.

To use it type

loadPackage("SRdeformations",Configuration=>{"UseConvex"=>true})

Note that you can change the standard option by editing the file init-SRdeformations.m2 in the .Macaulay directory in your home directory (it will be overwritten when you reinstall a newer version of the package, but there will be a backup).

**Examples:**

mirrorSphere uses the above functions to compute the mirror sphere of a Calabi-Yau.

The author was supported by DFG (German Research Foundation) through Grant BO3330/1-1.

- Types
- CoComplex -- The class of all embedded co-complexes.
- Complex -- The class of all embedded complexes.
- Face -- The class of all faces of complexes or co-complexes.
- FirstOrderDeformation -- The class of all first order deformations of monomial ideals.

- Functions and commands
- addCokerGrading -- Stores a cokernel grading in a polynomial ring.
- addFaceDataToComplex -- Adds to a complex face data.
- addFacetDataToComplex -- Adds to a complex facet data.
- bigTorusDegree -- The big torus degree of a deformation.
- boundaryCyclicPolytope -- The boundary complex of a cyclic polytope.
- boundaryOfPolytope -- The boundary of a polytope.
- closedStar -- The closed star of a face of a complex.
- coComplex -- Make a co-complex.
- coComplexToIdeal -- The monomial ideal associated to a CoComplex.
- cokerElement -- Gives an element in the cokernel of a matrix.
- complex -- Make a complex.
- complexFromFacets -- Make a complex from its facets.
- complexToIdeal -- The monomial ideal associated to a complex.
- convHull -- The convex hull complex.
- coordinates -- The coordinates of a face.
- deform -- Compute the deformations associated to a Stanley-Reisner complex.
- deformationsFace -- Compute the deformations associated to a face.
- denominatorMonomial -- The denominator monomial of a deformation.
- dualGrading -- The dual vertices of a polytope.
- dualize -- The dual of a face or complex.
- edim -- The embedding dimension of a complex or co-complex.
- embeddingComplex -- The embedding complex of a complex or co-complex.
- eulerCharacteristic -- The Euler characteristic of a complex.
- face -- Generate a face.
- faceToMonomial -- The monomial of a face.
- facets -- The maximal faces of a complex.
- fc -- The faces of a complex.
- firstOrderDeformation -- Makes a first order deformation.
- fullCyclicPolytope -- Cyclic polytope.
- fvector -- The F-vector of a complex.
- gensSource -- Generators of the source of a deformation.
- globalSections -- The global sections of a toric divisor.
- grading -- The grading of a first order deformation or complex or polynomial ring.
- hull -- The positive hull complex.
- idealToCoComplex -- The co-complex associated to a reduced monomial ideal.
- idealToComplex -- The complex associated to a reduced monomial ideal.
- intersectFaces -- The intersection of two faces.
- isEquidimensional -- Check whether a complex or co-complex is equidimensional.
- isNonzero -- Check whether a deformation is non-zero.
- isPolytope -- Check whether a complex is a polytope.
- isSimp -- Check whether a complex or co-complex is simplicial.
- isSubface -- Checks whether a face is a subface of another face.
- isTrivial -- Check whether a deformation is trivial.
- iszero -- Tests whether something is zero.
- joinVectors -- Converts a list of vectors to a matrix.
- laurent -- Converts an exponent vector or a deformation into a Laurent monomial.
- link -- The link of a face of a complex.
- loadDeformations -- Read the deformation data of a complex from a file.
- minimalNonFaces -- The minimal non-faces of a complex.
- newEmptyComplex -- Generates an empty complex.
- numeratorMonomial -- The numerator monomial of a deformation.
- ofComplex -- The complex of a face.
- parameters -- Parameters of a deformation.
- polytopalFacets -- The facets of a polytope.
- possibleDenominators -- Possible denominators of deformations.
- preImage -- Compute the preimage.
- PT1 -- Compute the deformation polytope associated to a Stanley-Reisner complex.
- raysPPn -- The rays of the standard fan of projective space or weighted projective space.
- relationsCoefficients -- Relations between the coefficients of a deformation.
- saveDeformations -- Store the deformation data of a complex in a file.
- simplex -- Simplex in the variables of a polynomial ring.
- simplexDim -- The dimension of a face inside the vertex simplex.
- simplexRing -- The underlying polynomial ring of a deformation or face or complex.
- toHom -- Convert a first order deformation into a homomorphism.
- totalSpace -- Total space of a deformation.
- trivialDeformations -- Compute the trivial deformations.
- tropDef -- The co-complex of tropical faces of the deformation polytope.
- variables -- The variables of a complex or co-complex.
- vectorToMonomial -- Converts an exponent vector into a monomial.
- vert -- The vertices of a face or complex.
- verticesDualPolytope -- The dual vertices of a polytope.

- Methods
- addFaceDataToComplex(Complex,List), see addFaceDataToComplex -- Adds to a complex face data.
- addFaceDataToComplex(Complex,List,List), see addFaceDataToComplex -- Adds to a complex face data.
- addFacetDataToComplex(Complex,List), see addFacetDataToComplex -- Adds to a complex facet data.
- bigTorusDegree(FirstOrderDeformation), see bigTorusDegree -- The big torus degree of a deformation.
- boundaryOfPolytope(Complex), see boundaryOfPolytope -- The boundary of a polytope.
- closedStar(Face,Complex), see closedStar -- The closed star of a face of a complex.
- coComplexToIdeal(CoComplex), see coComplexToIdeal -- The monomial ideal associated to a CoComplex.
- complement(Complex) -- Compute the complement CoComplex.
- complement(Face) -- Compute the complement face of a simplex.
- Complex == Complex -- Compare two complexes.
- complexToIdeal(Complex), see complexToIdeal -- The monomial ideal associated to a complex.
- coordinates(Face), see coordinates -- The coordinates of a face.
- coordinates(Face,Complex), see coordinates -- The coordinates of a face.
- deform(Complex), see deform -- Compute the deformations associated to a Stanley-Reisner complex.
- deformationsFace(Face,Complex), see deformationsFace -- Compute the deformations associated to a face.
- deformationsFace(Face,Complex,Ideal), see deformationsFace -- Compute the deformations associated to a face.
- degree(FirstOrderDeformation) -- The small torus degree of a deformation.
- denominator(FirstOrderDeformation) -- The denominator of a deformation as a vector.
- denominatorMonomial(FirstOrderDeformation), see denominatorMonomial -- The denominator monomial of a deformation.
- dim(Complex) -- Compute the dimension of a complex or co-complex.
- dim(Face) -- Compute the dimension of a face.
- dim(Face,Complex) -- Compute the dimension of a face.
- dim(Face,PolynomialRing) -- Compute the dimension of a face.
- dim(FirstOrderDeformation) -- Compute the dimension of a deformation.
- dualGrading(Complex), see dualGrading -- The dual vertices of a polytope.
- dualize(Complex), see dualize -- The dual of a face or complex.
- dualize(Face), see dualize -- The dual of a face or complex.
- edim(Complex), see edim -- The embedding dimension of a complex or co-complex.
- embeddingComplex(Complex), see embeddingComplex -- The embedding complex of a complex or co-complex.
- eulerCharacteristic(Complex), see eulerCharacteristic -- The Euler characteristic of a complex.
- face(List,Complex), see face -- Generate a face.
- face(List,Complex,ZZ,ZZ), see face -- Generate a face.
- Face == Face -- Compare two faces.
- faceToMonomial(Face), see faceToMonomial -- The monomial of a face.
- faceToMonomial(Face,PolynomialRing), see faceToMonomial -- The monomial of a face.
- facets(Complex), see facets -- The maximal faces of a complex.
- fc(Complex), see fc -- The faces of a complex.
- fc(Complex,ZZ), see fc -- The faces of a complex.
- FirstOrderDeformation == FirstOrderDeformation -- Compare two first order deformations.
- fvector(Complex), see fvector -- The F-vector of a complex.
- gensSource(FirstOrderDeformation), see gensSource -- Generators of the source of a deformation.
- grading(Complex) -- The grading of a complex.
- grading(FirstOrderDeformation) -- The small torus grading of a deformation.
- HH Complex -- Compute the homology of a complex.
- idealToCoComplex(Ideal,Complex), see idealToCoComplex -- The co-complex associated to a reduced monomial ideal.
- idealToCoComplex(MonomialIdeal,Complex), see idealToCoComplex -- The co-complex associated to a reduced monomial ideal.
- idealToComplex(Ideal,Complex), see idealToComplex -- The complex associated to a reduced monomial ideal.
- idealToComplex(MonomialIdeal,Complex), see idealToComplex -- The complex associated to a reduced monomial ideal.
- indices(Face) -- The indices of a face.
- intersectFaces(Face,Face), see intersectFaces -- The intersection of two faces.
- isEquidimensional(Complex), see isEquidimensional -- Check whether a complex or co-complex is equidimensional.
- isHomogeneous(FirstOrderDeformation) -- Check whether a deformation is homogeneous.
- isNonzero(FirstOrderDeformation), see isNonzero -- Check whether a deformation is non-zero.
- isPolytope(Complex), see isPolytope -- Check whether a complex is a polytope.
- isSimp(Complex), see isSimp -- Check whether a complex or co-complex is simplicial.
- isSubface(Face,Face), see isSubface -- Checks whether a face is a subface of another face.
- isTrivial(FirstOrderDeformation), see isTrivial -- Check whether a deformation is trivial.
- laurent(FirstOrderDeformation), see laurent -- Converts an exponent vector or a deformation into a Laurent monomial.
- link(Face,Complex), see link -- The link of a face of a complex.
- loadDeformations(Complex,String), see loadDeformations -- Read the deformation data of a complex from a file.
- minimalNonFaces(Complex), see minimalNonFaces -- The minimal non-faces of a complex.
- net(Complex) -- Printing complexes.
- net(Face) -- Printing faces.
- net(FirstOrderDeformation) -- Pretty print for deformations.
- numerator(FirstOrderDeformation) -- The numerator of a deformation as a vector.
- numeratorMonomial(FirstOrderDeformation), see numeratorMonomial -- The numerator monomial of a deformation.
- ofComplex(Face), see ofComplex -- The complex of a face.
- parameters(FirstOrderDeformation), see parameters -- Parameters of a deformation.
- polytopalFacets(Complex), see polytopalFacets -- The facets of a polytope.
- PT1(Complex), see PT1 -- Compute the deformation polytope associated to a Stanley-Reisner complex.
- relationsCoefficients(FirstOrderDeformation), see relationsCoefficients -- Relations between the coefficients of a deformation.
- saveDeformations(Complex,String), see saveDeformations -- Store the deformation data of a complex in a file.
- simplexDim(Face), see simplexDim -- The dimension of a face inside the vertex simplex.
- simplexRing(Complex) -- The underlying polynomial ring of a complex.
- simplexRing(Face) -- The underlying polynomial ring of a face.
- simplexRing(FirstOrderDeformation) -- The underlying polynomial ring of a deformation or face.
- source(FirstOrderDeformation) -- The source of a deformation.
- target(FirstOrderDeformation) -- The target of a deformation.
- toHom(FirstOrderDeformation), see toHom -- Convert a first order deformation into a homomorphism.
- totalSpace(FirstOrderDeformation,PolynomialRing), see totalSpace -- Total space of a deformation.
- trivialDeformations(Complex), see trivialDeformations -- Compute the trivial deformations.
- tropDef(Complex,Complex), see tropDef -- The co-complex of tropical faces of the deformation polytope.
- variables(Complex), see variables -- The variables of a complex or co-complex.
- vert(Complex), see vert -- The vertices of a face or complex.
- vert(Face), see vert -- The vertices of a face or complex.
- verticesDualPolytope(Complex), see verticesDualPolytope -- The dual vertices of a polytope.

- Symbols
- complementComplex -- Optional data of Complex.
- computeFaces -- Compute faces of a simplex.
- dualComplex -- Optional data of Complex.
- dualFace -- Optional data of Face.
- embedded -- Use only faces of the embedding complex.
- file -- Store result of a computation in a file.
- mirrorSphere -- Example how to compute the mirror sphere.
- noBoundary -- Optional data of Complex.