This is Varieties.info, produced by Macaulay2, version 1.24.11

Varieties -- affine and projective algebraic geometry
*****************************************************

Description
===========

This package provides routines for working with affine and projective varieties
and coherent sheaves on them.

Acknowledgement
===============

Large portions of this package were originally in m2/varieties.m2. Work on the
type SheafMap (missing documentation) and related algorithms began at a
Macaulay2 workshop (see https://aimath.org/pastworkshops/macaulay2efie.html )
at the American Institute of Mathematics (see https://aimath.org ) in September
2023.

Contributors
============

Claudiu Raicu (see https://www3.nd.edu/~craicu/ ) contributed to the
development of this package.

See also
========

  * Schubert2 -- computation in intersection theory
  * GKMVarieties -- computations with GKM varieties
    and moment graphs
  * NormalToricVarieties -- working with
    normal toric varieties and related objects
  * AbstractToricVarieties -- links
    abstract simplicial (normal) toric varieties to Schubert2
  * MultiprojectiveVarieties, --
    Multi-projective varieties and multi-rational maps

Authors
=======

  * Devlin Mallory (see https://www.math.utah.edu/~malloryd/ )
    <malloryd@math.utah.edu>
  * Ritvik Ramkumar (see https://sites.google.com/view/ritvikramkumar/ )
    <ritvikr@cornell.edu>
  * Mahrud Sayrafi (see https://math.umn.edu/~mahrud/ ) <mahrud@umn.edu>
  * Gregory G. Smith (see https://www.mast.queensu.ca/~ggsmith )
    <ggsmith@mast.queensu.ca>
  * Keller VandeBogert (see https://sites.google.com/view/kellervandebogert/
    home ) <kvandebo@nd.edu>

Version
=======

This documentation describes version 0.2 of Varieties.

Source code
===========

The source code from which this documentation is derived is in the file
Varieties.m2 (see common/share/Macaulay2/Varieties.m2 ). The auxiliary files
accompanying it are in the directory Varieties/ (see
common/share/Macaulay2/Varieties/ ).

Exports
=======

  * Types
      * AffineVariety -- the class of all affine
        varieties
      * CoherentSheaf -- the class of all coherent
        sheaves
      * LowerBound -- the class of lower bound objects
      * ProjectiveVariety -- the class of all
        projective varieties
      * SheafExpression -- the class of sheaf
        expressions
      * SheafMap (missing documentation)
      * SheafOfRings -- the class of sheaves of rings
      * SumOfTwists -- the class of all sums of twists
      * Variety -- the class of all algebraic varieties
  * Functions and commands
      * canonicalBundle (missing documentation)
      * cotangentSheaf -- cotangent sheaf of a
        projective variety
      * isLiftable (missing documentation)
      * isProjective (missing documentation)
      * Proj -- make a projective variety
      * sheaf -- make a coherent sheaf
      * sheafHom -- sheaf Hom
      * sheafMap (missing documentation)
      * Spec -- make an affine variety
      * tangentSheaf -- tangent sheaf of a projective
        variety
      * variety -- get the variety
  * Methods
      * - SheafMap (missing documentation)
      * "> InfiniteNumber" -- see > ZZ,
      * > ZZ
      * ">= InfiniteNumber" -- see >= ZZ,
      * >= ZZ
      * AffineVariety ** AffineVariety (missing documentation)
      * AffineVariety ** Ring
      * ambient(AffineVariety) (missing documentation)
      * ambient(CoherentSheaf) (missing documentation)
      * ambient(ProjectiveVariety) (missing documentation)
      * ambient(SheafMap) (missing documentation)
      * annihilator(CoherentSheaf), --
        the annihilator ideal
      * betti(CoherentSheaf) (missing documentation)
      * canonicalBundle(ProjectiveVariety) (missing documentation)
      * char(AffineVariety) -- the
        characteristic of the coordinate ring of a variety
      * "char(ProjectiveVariety)" -- see char(AffineVariety),
        -- the characteristic of the coordinate ring
        of a variety
      * codim(CoherentSheaf) -- codimension of
        the support of a coherent sheaf on a projective variety
      * codim(Variety) -- codimension of a variety
      * CoherentSheaf (*) -- sum of twists
      * "SheafOfRings (*)" -- see CoherentSheaf (*),
        -- sum of twists
      * CoherentSheaf ** CoherentSheaf
        -- tensor produce of coherent sheaves
      * CoherentSheaf ** SheafMap (missing documentation)
      * CoherentSheaf ++ CoherentSheaf,
        -- direct sum of coherent sheaves
      * CoherentSheaf / CoherentSheaf, --
        quotient of coherent sheaves
      * "CoherentSheaf / Ideal" -- see CoherentSheaf / CoherentSheaf,
        -- quotient of coherent sheaves
      * CoherentSheaf == CoherentSheaf (missing documentation)
      * CoherentSheaf == ZZ (missing documentation)
      * CoherentSheaf ^ Array (missing documentation)
      * CoherentSheaf ^ List (missing documentation)
      * CoherentSheaf ^ ZZ -- direct sum
      * "SheafOfRings ^ ZZ" -- see CoherentSheaf ^ ZZ,
        -- direct sum
      * CoherentSheaf ^** ZZ -- tensor power
      * CoherentSheaf _ Array (missing documentation)
      * CoherentSheaf Sequence (missing documentation)
      * CoherentSheaf ZZ -- canonical twist of a
        coherent sheaf
      * "SheafOfRings ZZ" -- see CoherentSheaf ZZ, --
        canonical twist of a coherent sheaf
      * coimage(SheafMap) (missing documentation)
      * cokernel(SheafMap) (missing documentation)
      * components(CoherentSheaf) (missing documentation)
      * components(SheafMap) (missing documentation)
      * cotangentSheaf(ProjectiveVariety)
        -- cotangent sheaf of a
        projective variety
      * cotangentSheaf(ZZ,ProjectiveVariety)
        -- exterior powers of the
        cotangent sheaf of a projective variety
      * cover(CoherentSheaf) (missing documentation)
      * cover(SheafMap) (missing documentation)
      * degree(ProjectiveVariety)
      * degree(SheafMap) (missing documentation)
      * degrees(CoherentSheaf) (missing documentation)
      * determinant(CoherentSheaf) (missing documentation)
      * dim(AffineVariety) -- dimension of the
        affine variety
      * dim(ProjectiveVariety) -- dimension
        of the projective variety
      * directSum(CoherentSheaf) (missing documentation)
      * directSum(SheafMap) (missing documentation)
      * dual(CoherentSheaf) -- dual coherent
        sheaf
      * dual(SheafMap) (missing documentation)
      * euler(CoherentSheaf) -- Euler
        characteristic of coherent sheaf
      * euler(Ideal)
      * euler(Module)
      * euler(ProjectiveHilbertPolynomial)
        -- constant term of the Hilbert
        polynomial
      * euler(ProjectiveVariety), --
        topological Euler characteristic of a (smooth) projective variety
      * euler(Ring)
      * eulers(CoherentSheaf)
      * "eulers(Module)" -- see eulers(CoherentSheaf),
      * eulers(Ideal)
      * eulers(Ring)
      * Ext^ZZ(CoherentSheaf,CoherentSheaf)
        -- global Ext
      * "Ext^ZZ(CoherentSheaf,SheafOfRings)" -- see
        Ext^ZZ(CoherentSheaf,CoherentSheaf),
        -- global Ext
      * "Ext^ZZ(SheafOfRings,CoherentSheaf)" -- see
        Ext^ZZ(CoherentSheaf,CoherentSheaf),
        -- global Ext
      * "Ext^ZZ(SheafOfRings,SheafOfRings)" -- see
        Ext^ZZ(CoherentSheaf,CoherentSheaf),
        -- global Ext
      * Ext^ZZ(CoherentSheaf,SheafMap) (missing documentation)
      * Ext^ZZ(CoherentSheaf,SumOfTwists)
        -- global Ext
      * "Ext^ZZ(SheafOfRings,SumOfTwists)" -- see
        Ext^ZZ(CoherentSheaf,SumOfTwists),
        -- global Ext
      * exteriorPower(ZZ,CoherentSheaf)
      * genera(CoherentSheaf)
      * "genera(Module)" -- see genera(CoherentSheaf),
      * genera(Ideal)
      * genera(ProjectiveVariety)
      * genera(Ring)
      * genus(CoherentSheaf)
      * "genus(Ideal)" -- see genus(CoherentSheaf),
      * "genus(Module)" -- see genus(CoherentSheaf),
      * genus(ProjectiveVariety)
      * genus(Ring)
      * "hh(Sequence,ProjectiveVariety)" -- see hh, -- Hodge numbers
        of a smooth projective variety
      * HH^ZZ SheafMap (missing documentation)
      * HH^ZZ SheafOfRings -- cohomology of a sheaf
        of rings on a projective variety
      * HH^ZZ SumOfTwists -- coherent sheaf
        cohomology module
      * HH^ZZ(AffineVariety,CoherentSheaf) (missing documentation)
      * "HH^ZZ CoherentSheaf" -- see
        HH^ZZ(ProjectiveVariety,CoherentSheaf),
        -- cohomology of a
        coherent sheaf on a projective variety
      * HH^ZZ(ProjectiveVariety,CoherentSheaf)
        -- cohomology of a
        coherent sheaf on a projective variety
      * HH^ZZ(ProjectiveVariety,SheafMap) (missing documentation)
      * HH^ZZ(ProjectiveVariety,SumOfTwists) (missing documentation)
      * HH^ZZ(Variety,SheafOfRings) (missing documentation)
      * hilbertPolynomial(CoherentSheaf)
        -- compute the Hilbert polynomial
        of the coherent sheaf
      * hilbertPolynomial(ProjectiveVariety)
        -- compute the Hilbert
        polynomial of the projective variety
      * Hom(CoherentSheaf,CoherentSheaf)
        -- global Hom
      * "Hom(CoherentSheaf,SheafOfRings)" -- see
        Hom(CoherentSheaf,CoherentSheaf),
        -- global Hom
      * "Hom(SheafOfRings,CoherentSheaf)" -- see
        Hom(CoherentSheaf,CoherentSheaf),
        -- global Hom
      * "Hom(SheafOfRings,SheafOfRings)" -- see
        Hom(CoherentSheaf,CoherentSheaf),
        -- global Hom
      * homology(SheafMap,SheafMap) (missing documentation)
      * homomorphism'(SheafMap) (missing documentation)
      * Ideal * CoherentSheaf (missing documentation)
      * ideal(Variety) -- returns the defining ideal
      * image(SheafMap) (missing documentation)
      * inducedMap(CoherentSheaf,CoherentSheaf) (missing documentation)
      * inverse(SheafMap) (missing documentation)
      * isIsomorphism(SheafMap) (missing documentation)
      * isLiftable(Matrix,Matrix) (missing documentation)
      * isLiftable(SheafMap,ZZ) (missing documentation)
      * isProjective(ProjectiveVariety) (missing documentation)
      * isProjective(Variety) (missing documentation)
      * isWellDefined(CoherentSheaf) (missing documentation)
      * isWellDefined(SheafMap) (missing documentation)
      * isWellDefined(Variety) (missing documentation)
      * kernel(SheafMap) (missing documentation)
      * lift(SheafMap) (missing documentation)
      * "CoherentSheaf LowerBound" -- see LowerBound, -- the
        class of lower bound objects
      * "SheafOfRings LowerBound" -- see LowerBound, -- the
        class of lower bound objects
      * map(CoherentSheaf,CoherentSheaf,Matrix) (missing documentation)
      * map(CoherentSheaf,CoherentSheaf,Matrix,InfiniteNumber) (missing
        documentation)
      * map(CoherentSheaf,CoherentSheaf,Matrix,ZZ) (missing documentation)
      * matrix(SheafMap) (missing documentation)
      * minimalPresentation(CoherentSheaf) (missing documentation)
      * minimalPresentation(SheafMap) (missing documentation)
      * minimalPresentation(SheafOfRings) (missing documentation)
      * module(CoherentSheaf) -- get the
        module defining a coherent sheaf
      * module(SheafOfRings)
      * numgens(CoherentSheaf) -- the number
        of generators of the underlying module
      * pdim(CoherentSheaf) -- calculate the
        projective dimension
      * "Proj(Ring)" -- see Proj, -- make a projective variety
      * prune(CoherentSheaf) (missing documentation)
      * prune(SheafMap) (missing documentation)
      * prune(SheafOfRings) (missing documentation)
      * pullback(SheafMap,SheafMap) (missing documentation)
      * pushout(SheafMap,SheafMap) (missing documentation)
      * rank(CoherentSheaf) (missing documentation)
      * ring(CoherentSheaf) -- the coordinate
        ring of the underlying variety
      * "ring(SheafOfRings)" -- see ring(CoherentSheaf),
        -- the coordinate ring of the underlying
        variety
      * "ring(SumOfTwists)" -- see ring(CoherentSheaf),
        -- the coordinate ring of the underlying
        variety
      * ring(SheafMap) (missing documentation)
      * ring(Variety) -- coordinate ring of the
        variety
      * "Module ~" -- see sheaf(Module), -- make a
        coherent sheaf
      * sheaf(Module) -- make a coherent sheaf
      * "Ring ~" -- see sheaf(Ring), -- make a coherent
        sheaf of rings
      * sheaf(Ring) -- make a coherent sheaf of rings
      * sheaf(Variety) -- make a coherent sheaf
      * sheaf(Variety,Module) -- make a
        coherent sheaf
      * sheaf(Variety,Ring) -- make a
        coherent sheaf of rings
      * "sheafExt^ZZ(CoherentSheaf,CoherentSheaf)" -- see sheafExt,
        -- sheaf Ext of coherent sheaves
      * "sheafExt^ZZ(CoherentSheaf,SheafOfRings)" -- see sheafExt,
        -- sheaf Ext of coherent sheaves
      * "sheafExt^ZZ(SheafOfRings,CoherentSheaf)" -- see sheafExt,
        -- sheaf Ext of coherent sheaves
      * "sheafExt^ZZ(SheafOfRings,SheafOfRings)" -- see sheafExt,
        -- sheaf Ext of coherent sheaves
      * "sheafHom(CoherentSheaf,CoherentSheaf)" -- see sheafHom,
        -- sheaf Hom
      * "sheafHom(CoherentSheaf,SheafOfRings)" -- see sheafHom,
        -- sheaf Hom
      * "sheafHom(SheafOfRings,CoherentSheaf)" -- see sheafHom,
        -- sheaf Hom
      * "sheafHom(SheafOfRings,SheafOfRings)" -- see sheafHom,
        -- sheaf Hom
      * sheafHom(CoherentSheaf,SheafMap) (missing documentation)
      * sheafHom(SheafMap,CoherentSheaf) (missing documentation)
      * sheafHom(SheafMap,SheafMap) (missing documentation)
      * sheafHom(SheafMap,SheafOfRings) (missing documentation)
      * sheafHom(SheafOfRings,SheafMap) (missing documentation)
      * SheafMap * SheafMap (missing documentation)
      * SheafMap ** CoherentSheaf (missing documentation)
      * SheafMap ** SheafMap (missing documentation)
      * SheafMap ** SheafOfRings (missing documentation)
      * SheafMap ++ SheafMap (missing documentation)
      * SheafMap == ZZ (missing documentation)
      * SheafMap ^ ZZ (missing documentation)
      * SheafMap ZZ (missing documentation)
      * sheafMap(Matrix) (missing documentation)
      * sheafMap(Matrix,ZZ) (missing documentation)
      * SheafOfRings ** SheafMap (missing documentation)
      * SheafOfRings ^ List -- make a graded free
        coherent sheaf
      * SheafOfRings Sequence (missing documentation)
      * singularLocus(AffineVariety) (missing documentation)
      * singularLocus(ProjectiveVariety) (missing documentation)
      * source(SheafMap) (missing documentation)
      * "Spec(Ring)" -- see Spec, -- make an affine variety
      * super(CoherentSheaf) (missing documentation)
      * super(SheafMap) (missing documentation)
      * symmetricPower(ZZ,CoherentSheaf) (missing documentation)
      * tangentSheaf(ProjectiveVariety)
        -- tangent sheaf of a projective
        variety
      * target(SheafMap) (missing documentation)
      * tensor(CoherentSheaf,CoherentSheaf) (missing documentation)
      * tensor(SheafMap,SheafMap) (missing documentation)
      * variety(CoherentSheaf) -- get the
        variety
      * variety(Ideal) -- the closed projective
        subvariety defined by an ideal
      * variety(Ring) -- the variety previously
        associated to a given ring
      * variety(SheafMap) (missing documentation)
      * variety(SheafOfRings) -- get the
        variety
      * variety(SumOfTwists) (missing documentation)
      * ZZ == CoherentSheaf (missing documentation)
      * ZZ == SheafMap (missing documentation)
  * Symbols
      * GlobalSectionLimit (missing documentation)
      * SaturationMap (missing documentation)
      * TorsionFree (missing documentation)
  * Other things
      * hh -- Hodge numbers of a smooth projective variety
      * OO -- the structure sheaf
      * sheafExt -- sheaf Ext of coherent sheaves

For the programmer
==================

The object Varieties, is a package (Macaulay2Doc).

Variety -- the class of all algebraic varieties
***********************************************

See also
========

  * varieties

Types of variety:
=================

  * AffineVariety -- the class of all affine varieties
  * ProjectiveVariety -- the class of all projective
    varieties

Functions and methods returning a variety:
==========================================

  * variety -- get the variety
  * variety(SheafMap) (missing documentation)

Methods that use a variety:
===========================

  * codim(Variety) -- codimension of a variety
  * HH^ZZ(Variety,SheafOfRings) (missing documentation)
  * ideal(Variety) -- returns the defining ideal
  * isProjective(Variety) (missing documentation)
  * isWellDefined(Variety) (missing documentation)
  * ring(Variety) -- coordinate ring of the variety
  * sheaf(Variety) -- make a coherent sheaf
  * sheaf(Variety,Module) -- make a
    coherent sheaf
  * sheaf(Variety,Ring) -- make a coherent
    sheaf of rings

For the programmer
==================

The object Variety, is a type (Macaulay2Doc), with
ancestor classes MutableHashTable (Macaulay2Doc), <
HashTable (Macaulay2Doc) < Thing (Macaulay2Doc).

AffineVariety -- the class of all affine varieties
**************************************************

Functions and methods returning an affine variety:
==================================================

  * AffineVariety ** AffineVariety (missing documentation)
  * AffineVariety ** Ring
  * ambient(AffineVariety) (missing documentation)
  * singularLocus(AffineVariety) (missing documentation)
  * Spec -- make an affine variety

Methods that use an affine variety:
===================================

  * char(AffineVariety) -- the characteristic
    of the coordinate ring of a variety
  * dim(AffineVariety) -- dimension of the
    affine variety
  * HH^ZZ(AffineVariety,CoherentSheaf) (missing documentation)

For the programmer
==================

The object AffineVariety, is a type (Macaulay2Doc),
with ancestor classes Variety, <
MutableHashTable (Macaulay2Doc) < HashTable (Macaulay2Doc)
< Thing (Macaulay2Doc).

ProjectiveVariety -- the class of all projective varieties
**********************************************************

Functions and methods returning a projective variety:
=====================================================

  * ambient(ProjectiveVariety) (missing documentation)
  * Proj -- make a projective variety
  * singularLocus(ProjectiveVariety) (missing documentation)

Methods that use a projective variety:
======================================

  * canonicalBundle(ProjectiveVariety) (missing documentation)
  * "char(ProjectiveVariety)" -- see char(AffineVariety),
    -- the characteristic of the coordinate ring of a
    variety
  * cotangentSheaf(ProjectiveVariety)
    -- cotangent sheaf of a projective
    variety
  * cotangentSheaf(ZZ,ProjectiveVariety)
    -- exterior powers of the
    cotangent sheaf of a projective variety
  * degree(ProjectiveVariety)
  * dim(ProjectiveVariety) -- dimension of
    the projective variety
  * euler(ProjectiveVariety), --
    topological Euler characteristic of a (smooth) projective variety
  * genera(ProjectiveVariety)
  * genus(ProjectiveVariety)
  * "hh(Sequence,ProjectiveVariety)" -- see hh, -- Hodge numbers of a
    smooth projective variety
  * HH^ZZ(ProjectiveVariety,CoherentSheaf)
    -- cohomology of a coherent
    sheaf on a projective variety
  * HH^ZZ(ProjectiveVariety,SheafMap) (missing documentation)
  * HH^ZZ(ProjectiveVariety,SumOfTwists) (missing documentation)
  * hilbertPolynomial(ProjectiveVariety)
    -- compute the Hilbert polynomial
    of the projective variety
  * isProjective(ProjectiveVariety) (missing documentation)
  * tangentSheaf(ProjectiveVariety),
    -- tangent sheaf of a projective variety

For the programmer
==================

The object ProjectiveVariety, is a type (Macaulay2Doc),
with ancestor classes Variety, <
MutableHashTable (Macaulay2Doc) < HashTable (Macaulay2Doc)
< Thing (Macaulay2Doc).

CoherentSheaf -- the class of all coherent sheaves
**************************************************

Functions and methods returning a coherent sheaf:
=================================================

  * ambient(CoherentSheaf) (missing documentation)
  * canonicalBundle (missing documentation)
  * CoherentSheaf ** CoherentSheaf,
    -- tensor produce of coherent sheaves
  * CoherentSheaf ++ CoherentSheaf, --
    direct sum of coherent sheaves
  * CoherentSheaf / CoherentSheaf, --
    quotient of coherent sheaves
  * "CoherentSheaf / Ideal" -- see CoherentSheaf / CoherentSheaf,
    -- quotient of coherent sheaves
  * CoherentSheaf ^ List (missing documentation)
  * CoherentSheaf ^ ZZ -- direct sum
  * "SheafOfRings ^ ZZ" -- see CoherentSheaf ^ ZZ, --
    direct sum
  * CoherentSheaf ^** ZZ -- tensor power
  * CoherentSheaf Sequence (missing documentation)
  * CoherentSheaf ZZ -- canonical twist of a coherent
    sheaf
  * "SheafOfRings ZZ" -- see CoherentSheaf ZZ, --
    canonical twist of a coherent sheaf
  * coimage(SheafMap) (missing documentation)
  * cokernel(SheafMap) (missing documentation)
  * cotangentSheaf -- cotangent sheaf of a projective
    variety
  * cover(CoherentSheaf) (missing documentation)
  * determinant(CoherentSheaf) (missing documentation)
  * directSum(CoherentSheaf) (missing documentation)
  * dual(CoherentSheaf) -- dual coherent sheaf
  * exteriorPower(ZZ,CoherentSheaf)
  * homology(SheafMap,SheafMap) (missing documentation)
  * Ideal * CoherentSheaf (missing documentation)
  * image(SheafMap) (missing documentation)
  * kernel(SheafMap) (missing documentation)
  * minimalPresentation(CoherentSheaf) (missing documentation)
  * prune(CoherentSheaf) (missing documentation)
  * pullback(SheafMap,SheafMap) (missing documentation)
  * pushout(SheafMap,SheafMap) (missing documentation)
  * "Module ~" -- see sheaf(Module), -- make a
    coherent sheaf
  * sheaf(Module) -- make a coherent sheaf
  * sheaf(Variety,Module) -- make a
    coherent sheaf
  * "sheafExt^ZZ(CoherentSheaf,CoherentSheaf)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafExt^ZZ(CoherentSheaf,SheafOfRings)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafExt^ZZ(SheafOfRings,CoherentSheaf)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafExt^ZZ(SheafOfRings,SheafOfRings)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * sheafHom -- sheaf Hom
  * "sheafHom(CoherentSheaf,CoherentSheaf)" -- see sheafHom, --
    sheaf Hom
  * "sheafHom(CoherentSheaf,SheafOfRings)" -- see sheafHom, --
    sheaf Hom
  * "sheafHom(SheafOfRings,CoherentSheaf)" -- see sheafHom, --
    sheaf Hom
  * "sheafHom(SheafOfRings,SheafOfRings)" -- see sheafHom, --
    sheaf Hom
  * SheafOfRings ^ List -- make a graded free
    coherent sheaf
  * SheafOfRings Sequence (missing documentation)
  * source(SheafMap) (missing documentation)
  * super(CoherentSheaf) (missing documentation)
  * symmetricPower(ZZ,CoherentSheaf) (missing documentation)
  * tangentSheaf -- tangent sheaf of a projective variety
  * target(SheafMap) (missing documentation)
  * tensor(CoherentSheaf,CoherentSheaf) (missing documentation)

Methods that use a coherent sheaf:
==================================

  * annihilator(CoherentSheaf) -- the
    annihilator ideal
  * betti(CoherentSheaf) (missing documentation)
  * codim(CoherentSheaf) -- codimension of the
    support of a coherent sheaf on a projective variety
  * CoherentSheaf (*) -- sum of twists
  * CoherentSheaf ** SheafMap (missing documentation)
  * CoherentSheaf == CoherentSheaf (missing documentation)
  * CoherentSheaf == ZZ (missing documentation)
  * CoherentSheaf ^ Array (missing documentation)
  * CoherentSheaf _ Array (missing documentation)
  * components(CoherentSheaf) (missing documentation)
  * degrees(CoherentSheaf) (missing documentation)
  * euler(CoherentSheaf) -- Euler
    characteristic of coherent sheaf
  * eulers(CoherentSheaf)
  * Ext^ZZ(CoherentSheaf,CoherentSheaf)
    -- global Ext
  * "Ext^ZZ(CoherentSheaf,SheafOfRings)" -- see
    Ext^ZZ(CoherentSheaf,CoherentSheaf),
    -- global Ext
  * "Ext^ZZ(SheafOfRings,CoherentSheaf)" -- see
    Ext^ZZ(CoherentSheaf,CoherentSheaf),
    -- global Ext
  * Ext^ZZ(CoherentSheaf,SheafMap) (missing documentation)
  * Ext^ZZ(CoherentSheaf,SumOfTwists)
    -- global Ext
  * genera(CoherentSheaf)
  * genus(CoherentSheaf)
  * HH^ZZ(AffineVariety,CoherentSheaf) (missing documentation)
  * "HH^ZZ CoherentSheaf" -- see HH^ZZ(ProjectiveVariety,CoherentSheaf),
    -- cohomology of a coherent
    sheaf on a projective variety
  * HH^ZZ(ProjectiveVariety,CoherentSheaf)
    -- cohomology of a coherent
    sheaf on a projective variety
  * hilbertPolynomial(CoherentSheaf)
    -- compute the Hilbert polynomial of
    the coherent sheaf
  * Hom(CoherentSheaf,CoherentSheaf)
    -- global Hom
  * "Hom(CoherentSheaf,SheafOfRings)" -- see
    Hom(CoherentSheaf,CoherentSheaf),
    -- global Hom
  * "Hom(SheafOfRings,CoherentSheaf)" -- see
    Hom(CoherentSheaf,CoherentSheaf),
    -- global Hom
  * inducedMap(CoherentSheaf,CoherentSheaf) (missing documentation)
  * isWellDefined(CoherentSheaf) (missing documentation)
  * "CoherentSheaf LowerBound" -- see LowerBound, -- the
    class of lower bound objects
  * map(CoherentSheaf,CoherentSheaf,Matrix) (missing documentation)
  * map(CoherentSheaf,CoherentSheaf,Matrix,InfiniteNumber) (missing
    documentation)
  * map(CoherentSheaf,CoherentSheaf,Matrix,ZZ) (missing documentation)
  * module(CoherentSheaf) -- get the module
    defining a coherent sheaf
  * numgens(CoherentSheaf) -- the number of
    generators of the underlying module
  * pdim(CoherentSheaf) -- calculate the
    projective dimension
  * rank(CoherentSheaf) (missing documentation)
  * ring(CoherentSheaf) -- the coordinate ring
    of the underlying variety
  * sheafHom(CoherentSheaf,SheafMap) (missing documentation)
  * sheafHom(SheafMap,CoherentSheaf) (missing documentation)
  * SheafMap ** CoherentSheaf (missing documentation)
  * variety(CoherentSheaf) -- get the
    variety
  * ZZ == CoherentSheaf (missing documentation)

For the programmer
==================

The object CoherentSheaf, is a type (Macaulay2Doc),
with ancestor classes HashTable (Macaulay2Doc),
< Thing (Macaulay2Doc).

SheafOfRings -- the class of sheaves of rings
*********************************************

Description
===========

+----------------------------------------+
|i1 : X = Proj(QQ[x..z])                 |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : OO_X                               |
|                                        |
|o2 = OO                                 |
|       X                                |
|                                        |
|o2 : SheafOfRings                       |
+----------------------------------------+
|i3 : OO_X^6                             |
|                                        |
|        6                               |
|o3 = OO                                 |
|       X                                |
|                                        |
|o3 : coherent sheaf on X, free of rank 6|
+----------------------------------------+

See also
========

  * Variety -- the class of all algebraic varieties
  * OO -- the structure sheaf

Functions and methods returning a sheaf of rings:
=================================================

  * minimalPresentation(SheafOfRings) (missing documentation)
  * prune(SheafOfRings) (missing documentation)
  * "Ring ~" -- see sheaf(Ring), -- make a coherent
    sheaf of rings
  * sheaf(Ring) -- make a coherent sheaf of rings
  * sheaf(Variety) -- make a coherent sheaf
  * sheaf(Variety,Ring) -- make a coherent
    sheaf of rings

Methods that use a sheaf of rings:
==================================

  * "SheafOfRings (*)" -- see CoherentSheaf (*),
    -- sum of twists
  * "SheafOfRings ^ ZZ" -- see CoherentSheaf ^ ZZ, --
    direct sum
  * "SheafOfRings ZZ" -- see CoherentSheaf ZZ, --
    canonical twist of a coherent sheaf
  * "Ext^ZZ(CoherentSheaf,SheafOfRings)" -- see
    Ext^ZZ(CoherentSheaf,CoherentSheaf),
    -- global Ext
  * "Ext^ZZ(SheafOfRings,CoherentSheaf)" -- see
    Ext^ZZ(CoherentSheaf,CoherentSheaf),
    -- global Ext
  * "Ext^ZZ(SheafOfRings,SheafOfRings)" -- see
    Ext^ZZ(CoherentSheaf,CoherentSheaf),
    -- global Ext
  * "Ext^ZZ(SheafOfRings,SumOfTwists)" -- see
    Ext^ZZ(CoherentSheaf,SumOfTwists),
    -- global Ext
  * HH^ZZ SheafOfRings -- cohomology of a sheaf of
    rings on a projective variety
  * HH^ZZ(Variety,SheafOfRings) (missing documentation)
  * "Hom(CoherentSheaf,SheafOfRings)" -- see
    Hom(CoherentSheaf,CoherentSheaf),
    -- global Hom
  * "Hom(SheafOfRings,CoherentSheaf)" -- see
    Hom(CoherentSheaf,CoherentSheaf),
    -- global Hom
  * "Hom(SheafOfRings,SheafOfRings)" -- see
    Hom(CoherentSheaf,CoherentSheaf),
    -- global Hom
  * "SheafOfRings LowerBound" -- see LowerBound, -- the class
    of lower bound objects
  * module(SheafOfRings)
  * "ring(SheafOfRings)" -- see ring(CoherentSheaf),
    -- the coordinate ring of the underlying variety
  * "sheafExt^ZZ(CoherentSheaf,SheafOfRings)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafExt^ZZ(SheafOfRings,CoherentSheaf)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafExt^ZZ(SheafOfRings,SheafOfRings)" -- see sheafExt,
    -- sheaf Ext of coherent sheaves
  * "sheafHom(CoherentSheaf,SheafOfRings)" -- see sheafHom, --
    sheaf Hom
  * "sheafHom(SheafOfRings,CoherentSheaf)" -- see sheafHom, --
    sheaf Hom
  * "sheafHom(SheafOfRings,SheafOfRings)" -- see sheafHom, --
    sheaf Hom
  * sheafHom(SheafMap,SheafOfRings) (missing documentation)
  * sheafHom(SheafOfRings,SheafMap) (missing documentation)
  * SheafMap ** SheafOfRings (missing documentation)
  * SheafOfRings ** SheafMap (missing documentation)
  * SheafOfRings ^ List -- make a graded free
    coherent sheaf
  * SheafOfRings Sequence (missing documentation)
  * variety(SheafOfRings) -- get the variety

For the programmer
==================

The object SheafOfRings, is a type (Macaulay2Doc),
with ancestor classes HashTable (Macaulay2Doc),
< Thing (Macaulay2Doc).

SumOfTwists -- the class of all sums of twists
**********************************************

Description
===========

This class is used internally as an abstract representation of a graded module
as an infinite direct sum of twists of a coherent sheaf.
+---------------------------------------------+
|i1 : R = QQ[x,y,z]                           |
|                                             |
|o1 = R                                       |
|                                             |
|o1 : PolynomialRing                          |
+---------------------------------------------+
|i2 : X = Proj R                              |
|                                             |
|o2 = X                                       |
|                                             |
|o2 : ProjectiveVariety                       |
+---------------------------------------------+
|i3 : OO_X(*)                                 |
|                                             |
|        1                                    |
|o3 = OO   (*)                                |
|       X                                     |
|                                             |
|o3 : SumOfTwists                             |
+---------------------------------------------+
|i4 : peek oo                                 |
|                                             |
|                    1                        |
|o4 = SumOfTwists{OO  , LowerBound{-infinity}}|
|                   X                         |
+---------------------------------------------+
|i5 : OO_X(>=2)                               |
|                                             |
|        1                                    |
|o5 = OO  (>= 2)                              |
|       X                                     |
|                                             |
|o5 : SumOfTwists                             |
+---------------------------------------------+
|i6 : peek oo                                 |
|                                             |
|                    1                        |
|o6 = SumOfTwists{OO  , LowerBound{2}}        |
|                   X                         |
+---------------------------------------------+
|i7 : Ext^0(OO_X^1, OO_X^1)                   |
|                                             |
|       1                                     |
|o7 = QQ                                      |
|                                             |
|o7 : QQ-module, free                         |
+---------------------------------------------+
|i8 : Ext^0(OO_X^1, OO_X^1(*))                |
|                                             |
|      1                                      |
|o8 = R                                       |
|                                             |
|o8 : R-module, free                          |
+---------------------------------------------+

Functions and methods returning a sum of twists:
================================================

  * CoherentSheaf (*) -- sum of twists
  * "SheafOfRings (*)" -- see CoherentSheaf (*),
    -- sum of twists
  * "CoherentSheaf LowerBound" -- see LowerBound, -- the
    class of lower bound objects
  * "SheafOfRings LowerBound" -- see LowerBound, -- the class
    of lower bound objects

Methods that use a sum of twists:
=================================

  * Ext^ZZ(CoherentSheaf,SumOfTwists)
    -- global Ext
  * "Ext^ZZ(SheafOfRings,SumOfTwists)" -- see
    Ext^ZZ(CoherentSheaf,SumOfTwists),
    -- global Ext
  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module
  * HH^ZZ(ProjectiveVariety,SumOfTwists) (missing documentation)
  * "ring(SumOfTwists)" -- see ring(CoherentSheaf),
    -- the coordinate ring of the underlying variety
  * variety(SumOfTwists) (missing documentation)

For the programmer
==================

The object SumOfTwists, is a type (Macaulay2Doc),
with ancestor classes BasicList (Macaulay2Doc),
< Thing (Macaulay2Doc).

SheafMap
********

Functions and methods returning a Morphism of Sheaves:
======================================================

  * ambient(SheafMap) (missing documentation)
  * CoherentSheaf ** SheafMap (missing documentation)
  * CoherentSheaf ^ Array (missing documentation)
  * CoherentSheaf _ Array (missing documentation)
  * cover(SheafMap) (missing documentation)
  * directSum(SheafMap) (missing documentation)
  * dual(SheafMap) (missing documentation)
  * inducedMap(CoherentSheaf,CoherentSheaf) (missing documentation)
  * inverse(SheafMap) (missing documentation)
  * lift(SheafMap) (missing documentation)
  * map(CoherentSheaf,CoherentSheaf,Matrix) (missing documentation)
  * map(CoherentSheaf,CoherentSheaf,Matrix,InfiniteNumber) (missing
    documentation)
  * map(CoherentSheaf,CoherentSheaf,Matrix,ZZ) (missing documentation)
  * minimalPresentation(SheafMap) (missing documentation)
  * prune(SheafMap) (missing documentation)
  * sheafHom(CoherentSheaf,SheafMap) (missing documentation)
  * sheafHom(SheafMap,CoherentSheaf) (missing documentation)
  * sheafHom(SheafMap,SheafMap) (missing documentation)
  * sheafHom(SheafMap,SheafOfRings) (missing documentation)
  * sheafHom(SheafOfRings,SheafMap) (missing documentation)
  * SheafMap * SheafMap (missing documentation)
  * SheafMap ** CoherentSheaf (missing documentation)
  * SheafMap ** SheafMap (missing documentation)
  * SheafMap ** SheafOfRings (missing documentation)
  * SheafMap ++ SheafMap (missing documentation)
  * SheafMap ^ ZZ (missing documentation)
  * SheafMap ZZ (missing documentation)
  * sheafMap(Matrix) (missing documentation)
  * sheafMap(Matrix,ZZ) (missing documentation)
  * SheafOfRings ** SheafMap (missing documentation)
  * super(SheafMap) (missing documentation)
  * tensor(SheafMap,SheafMap) (missing documentation)

Methods that use a Morphism of Sheaves:
=======================================

  * - SheafMap (missing documentation)
  * coimage(SheafMap) (missing documentation)
  * cokernel(SheafMap) (missing documentation)
  * components(SheafMap) (missing documentation)
  * degree(SheafMap) (missing documentation)
  * Ext^ZZ(CoherentSheaf,SheafMap) (missing documentation)
  * HH^ZZ SheafMap (missing documentation)
  * HH^ZZ(ProjectiveVariety,SheafMap) (missing documentation)
  * homology(SheafMap,SheafMap) (missing documentation)
  * homomorphism'(SheafMap) (missing documentation)
  * image(SheafMap) (missing documentation)
  * isIsomorphism(SheafMap) (missing documentation)
  * isLiftable(SheafMap,ZZ) (missing documentation)
  * isWellDefined(SheafMap) (missing documentation)
  * kernel(SheafMap) (missing documentation)
  * matrix(SheafMap) (missing documentation)
  * pullback(SheafMap,SheafMap) (missing documentation)
  * pushout(SheafMap,SheafMap) (missing documentation)
  * ring(SheafMap) (missing documentation)
  * SheafMap == ZZ (missing documentation)
  * source(SheafMap) (missing documentation)
  * target(SheafMap) (missing documentation)
  * variety(SheafMap) (missing documentation)
  * ZZ == SheafMap (missing documentation)

For the programmer
==================

The object SheafMap (missing documentation) is a type (Macaulay2Doc),
with ancestor classes HashTable (Macaulay2Doc),
< Thing (Macaulay2Doc).

> ZZ
****

Synopsis
========

  * Operator: > (Macaulay2Doc),
  * Usage:
        (> d)
  * Inputs:
      * d
  * Outputs:
      * a special object of class LowerBound used to represent the set of
        natural numbers larger than d

Ways to use this method:
========================

  * "> InfiniteNumber"
  * > ZZ

>= ZZ
*****

Synopsis
========

  * Operator: >= (Macaulay2Doc),
  * Usage:
        (>= d)
  * Inputs:
      * d
  * Outputs:
      * a special object of class LowerBound used to represent the set of
        natural numbers at least as large as d

Ways to use this method:
========================

  * ">= InfiniteNumber"
  * >= ZZ

AffineVariety ** Ring
*********************

Synopsis
========

  * Operator: ** (Macaulay2Doc),
  * Usage:
        X ** R
  * Inputs:
      * X
      * R
  * Outputs:
      * the tensor product of X with R

Description
===========

+----------------------+
|i1 : X = Spec(QQ[x,y])|
|                      |
|o1 = X                |
|                      |
|o1 : AffineVariety    |
+----------------------+
|i2 : Y = X ** (QQ[t]) |
|                      |
|o2 = Y                |
|                      |
|o2 : AffineVariety    |
+----------------------+
|i3 : describe Y       |
|                      |
|o3 = Spec(QQ[x..y, t])|
+----------------------+

Ways to use this method:
========================

  * AffineVariety ** Ring

annihilator(CoherentSheaf) -- the annihilator ideal
***************************************************

Synopsis
========

  * Function: annihilator (Saturation),
  * Usage:
        ann F
        annihilator F
  * Inputs:
      * F, a coherent sheaf,
  * Optional inputs (Macaulay2Doc),:
      * Strategy (Saturation), => a symbol (Macaulay2Doc),
        default value null, either Quotient or
        Intersection; see annihilator(...,Strategy=>...) (Saturation),
  * Outputs:
      * an ideal (Macaulay2Doc), the annihilator ideal

Description
===========

The annihilator of a sheaf of modules (see
https://stacks.math.columbia.edu/tag/0H2G ) $\mathcal F$ is the ideal
corresponding to the kernel of the map of sheaves $$ \mathcal O_X \to \mathcal
Hom_{\mathcal O_X}(\mathcal F, \mathcal F).b $$

You may use ann as a synonym for annihilator.

See also
========

  * annihilator(Module) (Saturation) -- the annihilator
    ideal
  * isSupportedInZeroLocus(Ideal,Module) (Saturation)
    -- whether support of a module is
    contained in the zero locus of the (irrelevant) ideal

Ways to use this method:
========================

  * annihilator(CoherentSheaf) -- the
    annihilator ideal

canonicalBundle
***************

Ways to use canonicalBundle:
============================

  * canonicalBundle(ProjectiveVariety) (missing documentation)

For the programmer
==================

The object canonicalBundle (missing documentation) is a method function with options (Macaulay2Doc).

char(AffineVariety) -- the characteristic of the coordinate ring of a variety
*****************************************************************************

Synopsis
========

  * Function: char (Macaulay2Doc),

Description
===========

Returns the characteristic of the corresponding ring.

Ways to use this method:
========================

  * char(AffineVariety) -- the characteristic
    of the coordinate ring of a variety
  * "char(ProjectiveVariety)"

codim(CoherentSheaf) -- codimension of the support of a coherent sheaf on a projective variety
**********************************************************************************************

Synopsis
========

  * Function: codim (Macaulay2Doc),
  * Usage:
        codim F
  * Inputs:
      * F, a coherent sheaf over a ProjectiveVariety,
        X
  * Optional inputs (Macaulay2Doc),:
      * Generic (missing documentation) => ..., default value false,
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the codimension of the support of F as given by dim(R) - dim(M) where
M is the module representing F over the homogeneous coordinate ring R of X.
+----------------------------------------------------------+
|i1 : R = ZZ/31991[a,b,c,d];                               |
+----------------------------------------------------------+
|i2 : I = monomialCurveIdeal(R,{1,3,5})                    |
|                                                          |
|             2         2     2    3    2                  |
|o2 = ideal (c  - b*d, b c - a d, b  - a c)                |
|                                                          |
|o2 : Ideal of R                                           |
+----------------------------------------------------------+
|i3 : projplane = Proj(R)                                  |
|                                                          |
|o3 = projplane                                            |
|                                                          |
|o3 : ProjectiveVariety                                    |
+----------------------------------------------------------+
|i4 : II = sheaf module I                                  |
|                                                          |
|o4 = image | c2-bd b2c-a2d b3-a2c |                       |
|                                                          |
|                                                         1|
|o4 : coherent sheaf on projplane, subsheaf of OO          |
|                                                projplane |
+----------------------------------------------------------+
|i5 : can = sheafExt^1(II,OO_projplane^1(-4))              |
|                                                          |
|o5 = cokernel | c b a2 |                                  |
|              | d c b2 |                                  |
|                                                          |
|                                                         2|
|o5 : coherent sheaf on projplane, quotient of OO          |
|                                                projplane |
+----------------------------------------------------------+
|i6 : codim can                                            |
|                                                          |
|o6 = 2                                                    |
+----------------------------------------------------------+

Caveat
======

The returned value is the usual codimension if R is an integral domain or, more
generally, equidimensional.

See also
========

  * dim(Module) (Macaulay2Doc) -- compute the Krull
    dimension

Ways to use this method:
========================

  * codim(CoherentSheaf) -- codimension of the
    support of a coherent sheaf on a projective variety

codim(Variety) -- codimension of a variety
******************************************

Synopsis
========

  * Function: codim (Macaulay2Doc),
  * Usage:
        codim V
  * Inputs:
      * V
  * Optional inputs (Macaulay2Doc),:
      * Generic (missing documentation) => ..., default value false,
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the codimension of a variety V.
+--------------------------------------------+
|i1 : R = ZZ/101[x_0..x_3];                  |
+--------------------------------------------+
|i2 : M = matrix{{x_0,x_1,x_2},{x_1,x_2,x_3}}|
|                                            |
|o2 = | x_0 x_1 x_2 |                        |
|     | x_1 x_2 x_3 |                        |
|                                            |
|             2      3                       |
|o2 : Matrix R  <-- R                        |
+--------------------------------------------+
|i3 : V = Proj(R/minors(2,M));               |
+--------------------------------------------+
|i4 : codim V                                |
|                                            |
|o4 = 2                                      |
+--------------------------------------------+

Caveat
======

The returned value is the usual codimension if the base ring is an integral
domain or, more generally, equidimensional.

See also
========

  * codim(QuotientRing) (Macaulay2Doc), --
    compute the codimension

Ways to use this method:
========================

  * codim(Variety) -- codimension of a variety

coherent sheaves
****************

The main reason to implement algebraic varieties is support the computation of
sheaf cohomology of coherent sheaves, which doesn't have an immediate
description in terms of graded modules.

In this example, we use cotangentSheaf, to produce the
cotangent sheaf on a K3 surface and compute its sheaf cohomology.
+-----------------------------------------------+
|i1 : R = QQ[a,b,c,d]/(a^4+b^4+c^4+d^4);        |
+-----------------------------------------------+
|i2 : X = Proj R                                |
|                                               |
|o2 = X                                         |
|                                               |
|o2 : ProjectiveVariety                         |
+-----------------------------------------------+
|i3 : Omega = cotangentSheaf X                  |
|                                               |
|o3 = cokernel {2} | c  0  0  d  0   a3  b3 0  ||
|              {2} | a  d  0  0  b3  -c3 0  0  ||
|              {2} | -b 0  d  0  a3  0   c3 0  ||
|              {2} | 0  b  a  0  -d3 0   0  c3 ||
|              {2} | 0  -c 0  a  0   -d3 0  b3 ||
|              {2} | 0  0  -c -b 0   0   d3 a3 ||
|                                               |
|                                         6     |
|o3 : coherent sheaf on X, quotient of OO  (-2) |
|                                        X      |
+-----------------------------------------------+
|i4 : HH^1(Omega)                               |
|                                               |
|       20                                      |
|o4 = QQ                                        |
|                                               |
|o4 : QQ-module, free                           |
+-----------------------------------------------+
Use the function sheaf, to convert a graded module to a coherent
sheaf, and module (Macaulay2Doc), to get the graded module back
again.
+------------------------------------------+
|i5 : F = sheaf coker matrix {{a,b}}       |
|                                          |
|o5 = cokernel | a b |                     |
|                                          |
|                                         1|
|o5 : coherent sheaf on X, quotient of OO  |
|                                        X |
+------------------------------------------+
|i6 : module F                             |
|                                          |
|o6 = cokernel | a b |                     |
|                                          |
|                            1             |
|o6 : R-module, quotient of R              |
+------------------------------------------+

See also
========

  * HH^ZZ CoherentSheaf, --
    cohomology of a coherent sheaf on a projective variety
  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module

CoherentSheaf (*) -- sum of twists
**********************************

Synopsis
========

  * Operator: (*) (Macaulay2Doc),
  * Usage:
        F(*)
  * Inputs:
      * F,  or a a sheaf of rings,
  * Outputs:
      * a symbolic representation of the graded object consisting of the twists
        F(n), for all integers n

Description
===========

+-----------------------------+
|i1 : R = QQ[x,y,z];          |
+-----------------------------+
|i2 : X = Proj R              |
|                             |
|o2 = X                       |
|                             |
|o2 : ProjectiveVariety       |
+-----------------------------+
|i3 : Ext^0(OO_X^1, OO_X^1)   |
|                             |
|       1                     |
|o3 = QQ                      |
|                             |
|o3 : QQ-module, free         |
+-----------------------------+
|i4 : Ext^0(OO_X^1, OO_X^1(*))|
|                             |
|      1                      |
|o4 = R                       |
|                             |
|o4 : R-module, free          |
+-----------------------------+
|i5 : Ext^0(OO_X^1, OO_X(*))  |
|                             |
|      1                      |
|o5 = R                       |
|                             |
|o5 : R-module, free          |
+-----------------------------+

Ways to use this method:
========================

  * CoherentSheaf (*) -- sum of twists
  * "SheafOfRings (*)"

CoherentSheaf ** CoherentSheaf -- tensor produce of coherent sheaves
********************************************************************

Synopsis
========

  * Operator: ** (Macaulay2Doc),
  * Usage:
        F ** G
  * Inputs:
      * F
      * G
  * Outputs:
      * the tensor product of F and G

Description
===========

+----------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : OO_X(-3) ++ OO_X(4)                |
|                                        |
|        1           1                   |
|o2 = OO  (-3) ++ OO  (4)                |
|       X           X                    |
|                                        |
|o2 : coherent sheaf on X, free of rank 2|
+----------------------------------------+
|i3 : oo ** oo                           |
|                                        |
|        1           2          1        |
|o3 = OO  (-6) ++ OO  (1) ++ OO  (8)     |
|       X           X          X         |
|                                        |
|o3 : coherent sheaf on X, free of rank 4|
+----------------------------------------+

Ways to use this method:
========================

  * CoherentSheaf ** CoherentSheaf,
    -- tensor produce of coherent sheaves

CoherentSheaf ++ CoherentSheaf -- direct sum of coherent sheaves
****************************************************************

Synopsis
========

  * Operator: ++ (Macaulay2Doc),
  * Usage:
        F ++ G
  * Inputs:
      * F
      * G
  * Outputs:
      * the direct sum of F and G

Description
===========

+--------------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                    |
|                                            |
|o1 = X                                      |
|                                            |
|o1 : ProjectiveVariety                      |
+--------------------------------------------+
|i2 : OO_X(3) ++ OO_X(4)                     |
|                                            |
|        1          1                        |
|o2 = OO  (3) ++ OO  (4)                     |
|       X          X                         |
|                                            |
|o2 : coherent sheaf on X, free of rank 2    |
+--------------------------------------------+
|i3 : module oo                              |
|                                            |
|               2                            |
|o3 = (QQ[x..z])                             |
|                                            |
|o3 : QQ[x..z]-module, free, degrees {-3, -4}|
+--------------------------------------------+

Ways to use this method:
========================

  * CoherentSheaf ++ CoherentSheaf, --
    direct sum of coherent sheaves

CoherentSheaf / CoherentSheaf -- quotient of coherent sheaves
*************************************************************

Synopsis
========

  * Operator: / (Macaulay2Doc),
  * Usage:
        F / G
  * Inputs:
      * F
      * G, or an ideal (Macaulay2Doc),
  * Outputs:
      * a coherent sheaf, the quotient sheaf F/G

Description
===========

We compute the cohomology of two sheaves supported on an elliptic curve.
+-----------------------------------------------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                                                     |
|                                                                             |
|o1 = X                                                                       |
|                                                                             |
|o1 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i2 : I = ideal(y^2*z-x*(x-z)*(x-11*z))                                       |
|                                                                             |
|              3      2     2         2                                       |
|o2 = ideal(- x  + 12x z + y z - 11x*z )                                      |
|                                                                             |
|o2 : Ideal of QQ[x..z]                                                       |
+-----------------------------------------------------------------------------+
|i3 : N = (sheaf module I)/(sheaf module I^2)                                 |
|                                                                             |
|o3 = subquotient (| -x3+12x2z+y2z-11xz2 |, | x6-24x5z-2x3y2z+166x4z2+24x2y2z2|
|                                                                             |
|                                            1                                |
|o3 : coherent sheaf on X, subquotient of OO                                  |
|                                           X                                 |
|-----------------------------------------------------------------------------|
|+y4z2-264x3z3-22xy2z3+121x2z4 |)                                             |
+-----------------------------------------------------------------------------+
|i4 : G = OO_X^1/I                                                            |
|                                                                             |
|o4 = cokernel | -x3+12x2z+y2z-11xz2 |                                        |
|                                                                             |
|                                         1                                   |
|o4 : coherent sheaf on X, quotient of OO                                     |
|                                        X                                    |
+-----------------------------------------------------------------------------+
|i5 : HH^1(G)                                                                 |
|                                                                             |
|       1                                                                     |
|o5 = QQ                                                                      |
|                                                                             |
|o5 : QQ-module, free                                                         |
+-----------------------------------------------------------------------------+
|i6 : HH^1(N)                                                                 |
|                                                                             |
|       9                                                                     |
|o6 = QQ                                                                      |
|                                                                             |
|o6 : QQ-module, free                                                         |
+-----------------------------------------------------------------------------+

See also
========

  * Proj -- make a projective variety
  * Spec -- make an affine variety
  * sheaf -- make a coherent sheaf
  * HH^ZZ CoherentSheaf, --
    cohomology of a coherent sheaf on a projective variety
  * OO -- the structure sheaf

Ways to use this method:
========================

  * CoherentSheaf / CoherentSheaf, --
    quotient of coherent sheaves
  * "CoherentSheaf / Ideal"

CoherentSheaf ^ ZZ -- direct sum
********************************

Synopsis
========

  * Operator: ^ (Macaulay2Doc),
  * Usage:
        F^n
  * Inputs:
      * F, , or a a sheaf of rings,
      * n
  * Outputs:
      * a coherent sheaf, the direct sum of n copies of F

Description
===========

+------------------------------------------+
|i1 : R = QQ[a..d]/(a*d-b*c)               |
|                                          |
|o1 = R                                    |
|                                          |
|o1 : QuotientRing                         |
+------------------------------------------+
|i2 : Q = Proj R                           |
|                                          |
|o2 = Q                                    |
|                                          |
|o2 : ProjectiveVariety                    |
+------------------------------------------+
|i3 : OO_Q^5                               |
|                                          |
|        5                                 |
|o3 = OO                                   |
|       Q                                  |
|                                          |
|o3 : coherent sheaf on Q, free of rank 5  |
+------------------------------------------+
|i4 : IL = sheaf module ideal(a,b)         |
|                                          |
|o4 = image | a b |                        |
|                                          |
|                                         1|
|o4 : coherent sheaf on Q, subsheaf of OO  |
|                                        Q |
+------------------------------------------+
|i5 : IL^3                                 |
|                                          |
|o5 = image | a b 0 0 0 0 |                |
|           | 0 0 a b 0 0 |                |
|           | 0 0 0 0 a b |                |
|                                          |
|                                         3|
|o5 : coherent sheaf on Q, subsheaf of OO  |
|                                        Q |
+------------------------------------------+

See also
========

  * Proj -- make a projective variety
  * sheaf -- make a coherent sheaf

Ways to use this method:
========================

  * CoherentSheaf ^ ZZ -- direct sum
  * "SheafOfRings ^ ZZ"

CoherentSheaf ^** ZZ -- tensor power
************************************

Synopsis
========

  * Operator: ^** (Macaulay2Doc),
  * Usage:
        M^**i
  * Inputs:
      * M
      * i
  * Outputs:
      * a coherent sheaf, the i-th tensor power of M

Description
===========

The second symmetric power of the canonical sheaf of the rational quartic:
+-----------------------------------------------------------------------------+
|i1 : R = QQ[a..d];                                                           |
+-----------------------------------------------------------------------------+
|i2 : I = monomialCurveIdeal(R,{1,3,4})                                       |
|                                                                             |
|                        3      2     2    2    3    2                        |
|o2 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)                      |
|                                                                             |
|o2 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+
|i3 : X = variety I                                                           |
|                                                                             |
|o3 = X                                                                       |
|                                                                             |
|o3 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i4 : KX = sheaf(Ext^1(I,R^{-4}) ** ring X)                                   |
|                                                                             |
|o4 = cokernel {1} | c 0 -d 0 -b |                                            |
|              {1} | b c 0  a 0  |                                            |
|              {1} | 0 d c  b a  |                                            |
|                                                                             |
|                                         3                                   |
|o4 : coherent sheaf on X, quotient of OO  (-1)                               |
|                                        X                                    |
+-----------------------------------------------------------------------------+
|i5 : K2 = KX^**2                                                             |
|                                                                             |
|o5 = cokernel {2} | c 0 -d 0 -b 0 0 0  0 0  0 0 0  0 0  c 0 -d 0 -b 0 0 0  0 |
|              {2} | b c 0  a 0  0 0 0  0 0  0 0 0  0 0  0 0 0  0 0  c 0 -d 0 |
|              {2} | 0 d c  b a  0 0 0  0 0  0 0 0  0 0  0 0 0  0 0  0 0 0  0 |
|              {2} | 0 0 0  0 0  c 0 -d 0 -b 0 0 0  0 0  b c 0  a 0  0 0 0  0 |
|              {2} | 0 0 0  0 0  b c 0  a 0  0 0 0  0 0  0 0 0  0 0  b c 0  a |
|              {2} | 0 0 0  0 0  0 d c  b a  0 0 0  0 0  0 0 0  0 0  0 0 0  0 |
|              {2} | 0 0 0  0 0  0 0 0  0 0  c 0 -d 0 -b 0 d c  b a  0 0 0  0 |
|              {2} | 0 0 0  0 0  0 0 0  0 0  b c 0  a 0  0 0 0  0 0  0 d c  b |
|              {2} | 0 0 0  0 0  0 0 0  0 0  0 d c  b a  0 0 0  0 0  0 0 0  0 |
|                                                                             |
|                                         9                                   |
|o5 : coherent sheaf on X, quotient of OO  (-2)                               |
|                                        X                                    |
|-----------------------------------------------------------------------------|
|0  0 0 0  0 0  |                                                             |
|-b 0 0 0  0 0  |                                                             |
|0  c 0 -d 0 -b |                                                             |
|0  0 0 0  0 0  |                                                             |
|0  0 0 0  0 0  |                                                             |
|0  b c 0  a 0  |                                                             |
|0  0 0 0  0 0  |                                                             |
|a  0 0 0  0 0  |                                                             |
|0  0 d c  b a  |                                                             |
+-----------------------------------------------------------------------------+
|i6 : prune K2                                                                |
|                                                                             |
|o6 = cokernel {1} | c2 bd ac b2 |                                            |
|              {2} | -d -c -b -a |                                            |
|                                                                             |
|                                         1           1                       |
|o6 : coherent sheaf on X, quotient of OO  (-1) ++ OO  (-2)                   |
|                                        X           X                        |
+-----------------------------------------------------------------------------+
Notice that the resulting sheaf is not always presented in the most economical
manner.  Use prune (Macaulay2Doc), to improve the presentation.

See also
========

  * monomialCurveIdeal (Macaulay2Doc) -- make the
    ideal of a monomial curve
  * Ext (Macaulay2Doc) -- compute an Ext module
  * variety -- get the variety
  * sheaf -- make a coherent sheaf
  * prune (Macaulay2Doc) -- prune, e.g., compute a minimal
    presentation

Ways to use this method:
========================

  * CoherentSheaf ^** ZZ -- tensor power

CoherentSheaf ZZ -- canonical twist of a coherent sheaf
*******************************************************

Synopsis
========

  * Operator: SPACE (Macaulay2Doc),
  * Usage:
        F(n)
  * Inputs:
      * F, or a sheaf of rings, on a projective variety
      * n
  * Outputs:
      * a coherent sheaf, the twist of F on a projective
        variety by the n-th power of the hyperplane line bundle.

Description
===========

+----------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : F = OO_X                           |
|                                        |
|o2 = OO                                 |
|       X                                |
|                                        |
|o2 : SheafOfRings                       |
+----------------------------------------+
|i3 : G = F(3)                           |
|                                        |
|        1                               |
|o3 = OO  (3)                            |
|       X                                |
|                                        |
|o3 : coherent sheaf on X, free of rank 1|
+----------------------------------------+
|i4 : module G                           |
|                                        |
|               1                        |
|o4 = (QQ[x..z])                         |
|                                        |
|o4 : QQ[x..z]-module, free, degrees {-3}|
+----------------------------------------+
|i5 : degrees oo                         |
|                                        |
|o5 = {{-3}}                             |
|                                        |
|o5 : List                               |
+----------------------------------------+

Ways to use this method:
========================

  * CoherentSheaf ZZ -- canonical twist of a coherent
    sheaf
  * "SheafOfRings ZZ"

cotangentSheaf -- cotangent sheaf of a projective variety
*********************************************************

See also
========

  * tangentSheaf -- tangent sheaf of a projective variety
  * ProjectiveVariety -- the class of all projective
    varieties

Ways to use cotangentSheaf:
===========================

  * cotangentSheaf(ProjectiveVariety)
    -- cotangent sheaf of a projective
    variety
  * cotangentSheaf(ZZ,ProjectiveVariety)
    -- exterior powers of the
    cotangent sheaf of a projective variety

For the programmer
==================

The object cotangentSheaf, is a method function with options (Macaulay2Doc).

cotangentSheaf(ProjectiveVariety) -- cotangent sheaf of a projective variety
****************************************************************************

Synopsis
========

  * Function: cotangentSheaf,
  * Usage:
        cotangentSheaf X
  * Inputs:
      * X
  * Optional inputs (Macaulay2Doc),:
      * MinimalGenerators => a Boolean value (Macaulay2Doc),
        default value true, whether to apply minimalPresentation (Macaulay2Doc),
        to the result before returning it
      * Strategy (missing documentation) => ..., default value null,
  * Outputs:
      * a coherent sheaf, the cotangent sheaf of the
        projective variety

Description
===========

This function computes the cotangent sheaf of the projective variety X.

As an example we verify Gauss-Bonnet's theorem on a plane quartic curve:
+----------------------------------------+
|i1 : X=Proj(QQ[x,y,z]/(x^4+y^4+z^4))    |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : genus(X)                           |
|                                        |
|o2 = 3                                  |
+----------------------------------------+
|i3 : omega = cotangentSheaf(X)          |
|                                        |
|        1                               |
|o3 = OO  (1)                            |
|       X                                |
|                                        |
|o3 : coherent sheaf on X, free of rank 1|
+----------------------------------------+
|i4 : degree omega                       |
|                                        |
|o4 = 4                                  |
+----------------------------------------+

See also
========

  * tangentSheaf -- tangent sheaf of a projective variety
  * ProjectiveVariety -- the class of all projective
    varieties

Ways to use this method:
========================

  * cotangentSheaf(ProjectiveVariety)
    -- cotangent sheaf of a projective
    variety

cotangentSheaf(ZZ,ProjectiveVariety) -- exterior powers of the cotangent sheaf of a projective variety
******************************************************************************************************

Synopsis
========

  * Function: cotangentSheaf,
  * Usage:
        cotangentSheaf(p,X)
  * Inputs:
      * p
      * X
  * Optional inputs (Macaulay2Doc),:
      * MinimalGenerators, => a
        Boolean value (Macaulay2Doc), default value true,
        whether to apply minimalPresentation (Macaulay2Doc),
        to the result before returning it
      * Strategy (missing documentation) => ..., default value null,
  * Outputs:
      * a coherent sheaf, the p-th exterior power of the
        cotangent sheaf

Description
===========

This function computes the p-th exterior power of the cotangent sheaf of a
variety X.

As an example we compute h^11 on a K3 surface (a quartic in projective
threespace):
+-------------------------------------------------------------------------+
|i1 : K3 = Proj(QQ[x_0..x_3]/(x_0^4+x_1^4+x_2^4+x_3^4-11*x_0*x_1*x_2*x_3))|
|                                                                         |
|o1 = K3                                                                  |
|                                                                         |
|o1 : ProjectiveVariety                                                   |
+-------------------------------------------------------------------------+
|i2 : omega1 = cotangentSheaf(1,K3);                                      |
+-------------------------------------------------------------------------+
|i3 : HH^1(omega1)                                                        |
|                                                                         |
|       20                                                                |
|o3 = QQ                                                                  |
|                                                                         |
|o3 : QQ-module, free                                                     |
+-------------------------------------------------------------------------+

As a second example we compute Hodge numbers of the Fermat quintic in
projective fourspace:
+-----------------------------------------------------------------------+
|i4 : FermatQuintic = Proj(QQ[x_0..x_4]/(x_0^5+x_1^5+x_2^5+x_3^5+x_4^5))|
|                                                                       |
|o4 = FermatQuintic                                                     |
|                                                                       |
|o4 : ProjectiveVariety                                                 |
+-----------------------------------------------------------------------+
|i5 : omega1 = cotangentSheaf(1,FermatQuintic);                         |
+-----------------------------------------------------------------------+
|i6 : HH^1(omega1)                                                      |
|                                                                       |
|       1                                                               |
|o6 = QQ                                                                |
|                                                                       |
|o6 : QQ-module, free                                                   |
+-----------------------------------------------------------------------+
|i7 : omega2 = cotangentSheaf(2,FermatQuintic);                         |
+-----------------------------------------------------------------------+
|i8 : HH^1(omega2)                                                      |
|                                                                       |
|       101                                                             |
|o8 = QQ                                                                |
|                                                                       |
|o8 : QQ-module, free                                                   |
+-----------------------------------------------------------------------+
|i9 : HH^2(omega1)                                                      |
|                                                                       |
|       101                                                             |
|o9 = QQ                                                                |
|                                                                       |
|o9 : QQ-module, free                                                   |
+-----------------------------------------------------------------------+

See also
========

  * tangentSheaf -- tangent sheaf of a projective variety

Ways to use this method:
========================

  * cotangentSheaf(ZZ,ProjectiveVariety)
    -- exterior powers of the
    cotangent sheaf of a projective variety

degree(ProjectiveVariety)
*************************

Synopsis
========

  * Function: degree (Macaulay2Doc),
  * Usage:
        degree X
  * Inputs:
      * X
  * Outputs:
      * an integer (Macaulay2Doc), the degree of X

Description
===========

+--------------------------------------+
|i1 : S = ZZ/32003[x,y,z];             |
+--------------------------------------+
|i2 : I = ideal(x^4-4*x*y*z^2-z^4-y^4);|
|                                      |
|o2 : Ideal of S                       |
+--------------------------------------+
|i3 : R = S/I;                         |
+--------------------------------------+
|i4 : X = variety I                    |
|                                      |
|o4 = X                                |
|                                      |
|o4 : ProjectiveVariety                |
+--------------------------------------+
|i5 : degree X                         |
|                                      |
|o5 = 4                                |
+--------------------------------------+
The degree of a projective variety X = V(I) = Proj R is the degree of the
homogeneous coordinate ring R = S/I of X.
+-------------------------+
|i6 : degree X == degree I|
|                         |
|o6 = true                |
+-------------------------+
|i7 : degree X == degree R|
|                         |
|o7 = true                |
+-------------------------+

See also
========

  * degree(Ideal) (Macaulay2Doc)
  * variety -- get the variety
  * varieties

Ways to use this method:
========================

  * degree(ProjectiveVariety)

dim(AffineVariety) -- dimension of the affine variety
*****************************************************

Synopsis
========

  * Function: dim (Macaulay2Doc),
  * Usage:
        dim V
  * Inputs:
      * V
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the dimension of the affine algebraic set V as the Krull dimension of
its affine coordinate ring.
+------------------------------------+
|i1 : R = ZZ/101[x,y];               |
+------------------------------------+
|i2 : point = ideal(x,y);            |
|                                    |
|o2 : Ideal of R                     |
+------------------------------------+
|i3 : line = ideal(2*x+3*y-1);       |
|                                    |
|o3 : Ideal of R                     |
+------------------------------------+
|i4 : V=Spec(R/intersect(point,line))|
|                                    |
|o4 = V                              |
|                                    |
|o4 : AffineVariety                  |
+------------------------------------+
|i5 : dim V                          |
|                                    |
|o5 = 1                              |
+------------------------------------+
|i6 : Z=Spec(R/(point+line))         |
|                                    |
|o6 = Z                              |
|                                    |
|o6 : AffineVariety                  |
+------------------------------------+
|i7 : dim Z                          |
|                                    |
|o7 = -1                             |
+------------------------------------+

See also
========

  * Spec -- make an affine variety
  * dim(ProjectiveVariety) -- dimension of
    the projective variety

Ways to use this method:
========================

  * dim(AffineVariety) -- dimension of the
    affine variety

dim(ProjectiveVariety) -- dimension of the projective variety
*************************************************************

Synopsis
========

  * Function: dim (Macaulay2Doc),
  * Usage:
        dim V
  * Inputs:
      * V
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the dimension of the projective algebraic set from the Krull dimension
of its homogeneous coordinate ring.
+----------------------------------------------------+
|i1 : R = ZZ/101[x_0..x_4];                          |
+----------------------------------------------------+
|i2 : M = matrix{{x_0,x_1,x_2,x_3},{x_1,x_2,x_3,x_4}}|
|                                                    |
|o2 = | x_0 x_1 x_2 x_3 |                            |
|     | x_1 x_2 x_3 x_4 |                            |
|                                                    |
|             2      4                               |
|o2 : Matrix R  <-- R                                |
+----------------------------------------------------+
|i3 : V = Proj(R/minors(2,M));                       |
+----------------------------------------------------+
|i4 : degree V                                       |
|                                                    |
|o4 = 4                                              |
+----------------------------------------------------+
|i5 : dim V                                          |
|                                                    |
|o5 = 1                                              |
+----------------------------------------------------+
|i6 : dim minors(2,M)                                |
|                                                    |
|o6 = 2                                              |
+----------------------------------------------------+

See also
========

  * Proj -- make a projective variety
  * dim(AffineVariety) -- dimension of the
    affine variety

Ways to use this method:
========================

  * dim(ProjectiveVariety) -- dimension of
    the projective variety

dual(CoherentSheaf) -- dual coherent sheaf
******************************************

Synopsis
========

  * Function: dual (Macaulay2Doc),

Description
===========

dual M -- the dual of a coherent sheaf.

Ways to use this method:
========================

  * dual(CoherentSheaf) -- dual coherent sheaf

euler -- Euler characteristic
*****************************

See also
========

  * eulers (missing documentation)
  * genus (missing documentation)

Ways to use euler:
==================

  * euler(CoherentSheaf) -- Euler
    characteristic of coherent sheaf
  * euler(Ideal)
  * euler(Module)
  * euler(ProjectiveHilbertPolynomial)
    -- constant term of the Hilbert
    polynomial
  * euler(ProjectiveVariety), --
    topological Euler characteristic of a (smooth) projective variety
  * euler(Ring)

For the programmer
==================

The object euler, is a method function (Macaulay2Doc).

euler(CoherentSheaf) -- Euler characteristic of coherent sheaf
**************************************************************

Synopsis
========

  * Function: euler,
  * Usage:
        euler F
  * Inputs:
      * F
  * Outputs:
      * an integer (Macaulay2Doc),  the Euler characteristic of the
        cohomology of the sheaf

Description
===========

The command returns chi(F) the Euler characteristic of the sheaf F i.e. the
alternated sum of the dimensions of its cohomology groups

See also
========

  * eulers(CoherentSheaf)
  * genus (missing documentation)

Ways to use this method:
========================

  * euler(CoherentSheaf) -- Euler
    characteristic of coherent sheaf

euler(Ideal)
************

Synopsis
========

  * Function: euler,

Description
===========

This needs to be documented.

See also
========

  * eulers(Ideal) (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * euler(Ideal)

euler(Module)
*************

Synopsis
========

  * Function: euler,

Description
===========

This needs to be documented.

See also
========

  * eulers(Module) (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * euler(Module)

euler(ProjectiveHilbertPolynomial) -- constant term of the Hilbert polynomial
*****************************************************************************

Synopsis
========

  * Function: euler,
  * Usage:
        euler P
  * Inputs:
      * P
  * Outputs:
      * an integer (Macaulay2Doc),  the constant term of the Hilbert
        polynomial

Description
===========

The command returns P(0) the constant term of P. This is also the Euler
characteristic of the sheaf of rings of a projective variety with Hilbert
polynomial P.

+------------------------------------------------+
|i1 : R = QQ[x_0..x_3]                           |
|                                                |
|o1 = R                                          |
|                                                |
|o1 : PolynomialRing                             |
+------------------------------------------------+
|i2 : C = Proj(R/monomialCurveIdeal(R, {1,3,4}));|
+------------------------------------------------+
|i3 : P = hilbertPolynomial C                    |
|                                                |
|o3 = - 3*P  + 4*P                               |
|          0      1                              |
|                                                |
|o3 : ProjectiveHilbertPolynomial                |
+------------------------------------------------+
|i4 : euler P                                    |
|                                                |
|o4 = 1                                          |
+------------------------------------------------+

See also
========

  * hilbertPolynomial (Macaulay2Doc) -- compute the
    Hilbert polynomial
  * eulers (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * euler(ProjectiveHilbertPolynomial)
    -- constant term of the Hilbert
    polynomial

euler(ProjectiveVariety) -- topological Euler characteristic of a (smooth) projective variety
*********************************************************************************************

Synopsis
========

  * Function: euler,
  * Usage:
        euler V
  * Inputs:
      * V
  * Outputs:
      * an integer (Macaulay2Doc), the topological Euler
        characteristics of the variety V

Description
===========

The command computes the topological Euler characteristic of the (smooth)
projective variety V as an alternated sum of its Hodge numbers. The Hodge
numbers can be computed directly using the command hh.

A smooth plane quartic curve has genus 3 and topological Euler characteristic
-4:
+----------------------------------------------------------+
|i1 : Quartic = Proj(QQ[x_0..x_2]/ideal(x_0^4+x_1^4+x_2^4))|
|                                                          |
|o1 = Quartic                                              |
|                                                          |
|o1 : ProjectiveVariety                                    |
+----------------------------------------------------------+
|i2 : euler(Quartic)                                       |
|                                                          |
|o2 = -4                                                   |
+----------------------------------------------------------+

The topological Euler characteristic of a smooth quintic hypersurface in
projective fourspace is -200:
+-----------------------------------------------------------------------------+
|i3 : Quintic = Proj(QQ[x_0..x_4]/ideal(x_0^5+x_1^5+x_2^5+x_3^5+x_4^5-101*x_0*|
|                                                                             |
|o3 = Quintic                                                                 |
|                                                                             |
|o3 : ProjectiveVariety                                                       |
|-----------------------------------------------------------------------------|
|x_1*x_2*x_3*x_4))                                                            |
+-----------------------------------------------------------------------------+
|i4 : euler(Quintic)                                                          |
|                                                                             |
|o4 = -200                                                                    |
+-----------------------------------------------------------------------------+

Caveat
======

No test is made to see if the projective variety is smooth

See also
========

  * Proj -- make a projective variety
  * genus (missing documentation)
  * hh -- Hodge numbers of a smooth projective variety

Ways to use this method:
========================

  * euler(ProjectiveVariety), --
    topological Euler characteristic of a (smooth) projective variety

euler(Ring)
***********

Synopsis
========

  * Function: euler,

Description
===========

This needs to be documented.

See also
========

  * eulers(Ring) (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * euler(Ring)

eulers -- list the sectional Euler characteristics
**************************************************

See also
========

  * euler (missing documentation)
  * genera (missing documentation)
  * genus (missing documentation)

Ways to use eulers:
===================

  * eulers(CoherentSheaf)
  * "eulers(Module)" -- see eulers(CoherentSheaf),
  * eulers(Ideal)
  * eulers(Ring)

For the programmer
==================

The object eulers, is a method function (Macaulay2Doc).

eulers(CoherentSheaf)
*********************

Synopsis
========

  * Function: eulers,
  * Usage:
        eulers E
  * Inputs:
      * E
  * Outputs:
      * a list (Macaulay2Doc), the successive sectional Euler
        characteristics of a coherent sheaf, or a module.

Description
===========

Computes a list of the successive sectional Euler characteristics of a coherent
sheaf, the i-th entry on the list being the Euler characteristic of the i-th
generic hyperplane restriction of E

The Horrocks-Mumford bundle on the projective fourspace:
+------------------------------------------------------------+
|i1 : R = QQ[x_0..x_4];                                      |
+------------------------------------------------------------+
|i2 : a = {1,0,0,0,0}                                        |
|                                                            |
|o2 = {1, 0, 0, 0, 0}                                        |
|                                                            |
|o2 : List                                                   |
+------------------------------------------------------------+
|i3 : b = {0,1,0,0,1}                                        |
|                                                            |
|o3 = {0, 1, 0, 0, 1}                                        |
|                                                            |
|o3 : List                                                   |
+------------------------------------------------------------+
|i4 : c = {0,0,1,1,0}                                        |
|                                                            |
|o4 = {0, 0, 1, 1, 0}                                        |
|                                                            |
|o4 : List                                                   |
+------------------------------------------------------------+
|i5 : M1 = matrix table(5,5, (i,j)-> x_((i+j)%5)*a_((i-j)%5))|
|                                                            |
|o5 = | x_0 0   0   0   0   |                                |
|     | 0   x_2 0   0   0   |                                |
|     | 0   0   x_4 0   0   |                                |
|     | 0   0   0   x_1 0   |                                |
|     | 0   0   0   0   x_3 |                                |
|                                                            |
|             5      5                                       |
|o5 : Matrix R  <-- R                                        |
+------------------------------------------------------------+
|i6 : M2 = matrix table(5,5, (i,j)-> x_((i+j)%5)*b_((i-j)%5))|
|                                                            |
|o6 = | 0   x_1 0   0   x_4 |                                |
|     | x_1 0   x_3 0   0   |                                |
|     | 0   x_3 0   x_0 0   |                                |
|     | 0   0   x_0 0   x_2 |                                |
|     | x_4 0   0   x_2 0   |                                |
|                                                            |
|             5      5                                       |
|o6 : Matrix R  <-- R                                        |
+------------------------------------------------------------+
|i7 : M3 = matrix table(5,5, (i,j)-> x_((i+j)%5)*c_((i-j)%5))|
|                                                            |
|o7 = | 0   0   x_2 x_3 0   |                                |
|     | 0   0   0   x_4 x_0 |                                |
|     | x_2 0   0   0   x_1 |                                |
|     | x_3 x_4 0   0   0   |                                |
|     | 0   x_0 x_1 0   0   |                                |
|                                                            |
|             5      5                                       |
|o7 : Matrix R  <-- R                                        |
+------------------------------------------------------------+
|i8 : M = M1 | M2 | M3;                                      |
|                                                            |
|             5      15                                      |
|o8 : Matrix R  <-- R                                        |
+------------------------------------------------------------+
|i9 : betti (C=res coker M)                                  |
|                                                            |
|            0  1  2  3  4 5                                 |
|o9 = total: 5 15 29 37 20 2                                 |
|         0: 5 15 10  2  . .                                 |
|         1: .  .  4  .  . .                                 |
|         2: .  . 15 35 20 .                                 |
|         3: .  .  .  .  . 2                                 |
|                                                            |
|o9 : BettiTally                                             |
+------------------------------------------------------------+
|i10 : N = transpose submatrix(C.dd_3,{10..28},{2..36});     |
|                                                            |
|              35      19                                    |
|o10 : Matrix R   <-- R                                      |
+------------------------------------------------------------+
|i11 : betti (D=res coker N)                                 |
|                                                            |
|              0  1  2  3  4 5                               |
|o11 = total: 35 19 19 35 20 2                               |
|         -5: 35 15  .  .  . .                               |
|         -4:  .  4  .  .  . .                               |
|         -3:  .  .  .  .  . .                               |
|         -2:  .  .  .  .  . .                               |
|         -1:  .  .  .  .  . .                               |
|          0:  .  .  4  .  . .                               |
|          1:  .  . 15 35 20 .                               |
|          2:  .  .  .  .  . 2                               |
|                                                            |
|o11 : BettiTally                                            |
+------------------------------------------------------------+
|i12 : Pfour = Proj(R)                                       |
|                                                            |
|o12 = Pfour                                                 |
|                                                            |
|o12 : ProjectiveVariety                                     |
+------------------------------------------------------------+
|i13 : HorrocksMumford = sheaf(coker D.dd_3);                |
+------------------------------------------------------------+
|i14 : HH^0(HorrocksMumford(1))                              |
|                                                            |
|o14 = 0                                                     |
|                                                            |
|o14 : QQ-module                                             |
+------------------------------------------------------------+
|i15 : HH^0(HorrocksMumford(2))                              |
|                                                            |
|        4                                                   |
|o15 = QQ                                                    |
|                                                            |
|o15 : QQ-module, free                                       |
+------------------------------------------------------------+
|i16 : eulers(HorrocksMumford(2))                            |
|                                                            |
|o16 = {2, 12, 12, 7, 2}                                     |
|                                                            |
|o16 : List                                                  |
+------------------------------------------------------------+

See also
========

  * genera (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * eulers(CoherentSheaf)
  * "eulers(Module)"

eulers(Ideal)
*************

Synopsis
========

  * Function: eulers,
  * Usage:
        eulers I
  * Inputs:
      * I
  * Outputs:
      * the successive sectional Euler characteristics of an ideal (sheaf)., a
        list (Macaulay2Doc),

Description
===========

Computes a list of the successive sectional Euler characteristics of an ideal
(sheaf), the i-th entry in the list being the Euler characteristic of the i-th
generic hyperplane restriction of I
+--------------------------+
|i1 : R = ZZ/101[a,b,c];   |
+--------------------------+
|i2 : I =ideal(a^3+b^3+c^3)|
|                          |
|            3    3    3   |
|o2 = ideal(a  + b  + c )  |
|                          |
|o2 : Ideal of R           |
+--------------------------+
|i3 : eulers I             |
|                          |
|o3 = {0, 3}               |
|                          |
|o3 : List                 |
+--------------------------+

See also
========

  * genera (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * eulers(Ideal)

eulers(Ring)
************

Synopsis
========

  * Function: eulers,
  * Usage:
        eulers R
  * Inputs:
      * R
  * Outputs:
      * the successive sectional Euler characteristics of a (sheaf of)
        ring(s)., a list (Macaulay2Doc),

Description
===========

Computes a list of the successive sectional Euler characteristics of a ring
(sheaf of), the i-th entry in the list being the Euler characteristic of the
i-th generic hyperplane restriction of R
+-----------------------------------+
|i1 : S = ZZ/101[a,b,c];            |
+-----------------------------------+
|i2 : I = ideal(a^3+b^3+c^3)        |
|                                   |
|            3    3    3            |
|o2 = ideal(a  + b  + c )           |
|                                   |
|o2 : Ideal of S                    |
+-----------------------------------+
|i3 : R = S/I                       |
|                                   |
|o3 = R                             |
|                                   |
|o3 : QuotientRing                  |
+-----------------------------------+
|i4 : eulers(R)                     |
|                                   |
|o4 = {0, 3}                        |
|                                   |
|o4 : List                          |
+-----------------------------------+
|i5 : J = substitute(ideal(b,a+c),R)|
|                                   |
|o5 = ideal (b, a + c)              |
|                                   |
|o5 : Ideal of R                    |
+-----------------------------------+
|i6 : eulers(R/J)                   |
|                                   |
|o6 = {1}                           |
|                                   |
|o6 : List                          |
+-----------------------------------+

See also
========

  * genera (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * eulers(Ring)

Ext^ZZ(CoherentSheaf,CoherentSheaf) -- global Ext
*************************************************

Synopsis
========

  * Scripted functor: Ext (Macaulay2Doc),
  * Usage:
        Ext^i(M,N)
  * Inputs:
      * i
      * M
      * N
  * Outputs:
      * a module (Macaulay2Doc), The global Ext module
        $Ext^i_X(M,N)$

Description
===========

If M or N is a sheaf of rings, it is regarded as a sheaf of modules in the
evident way.

M and N must be coherent sheaves on the same projective variety or scheme X.

As an example, we compute Hom_X(I_X,OO_X), and Ext^1_X(I_X,OO_X), for the
rational quartic curve in $P^3$.
+----------------------------------------------------------+
|i1 : S = QQ[a..d];                                        |
+----------------------------------------------------------+
|i2 : I = monomialCurveIdeal(S,{1,3,4})                    |
|                                                          |
|                        3      2     2    2    3    2     |
|o2 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)   |
|                                                          |
|o2 : Ideal of S                                           |
+----------------------------------------------------------+
|i3 : R = S/I                                              |
|                                                          |
|o3 = R                                                    |
|                                                          |
|o3 : QuotientRing                                         |
+----------------------------------------------------------+
|i4 : X = Proj R                                           |
|                                                          |
|o4 = X                                                    |
|                                                          |
|o4 : ProjectiveVariety                                    |
+----------------------------------------------------------+
|i5 : IX = sheaf (module I ** R)                           |
|                                                          |
|o5 = cokernel {2} | c2 bd ac b2 |                         |
|              {3} | -b -a 0  0  |                         |
|              {3} | d  c  -b -a |                         |
|              {3} | 0  0  -d -c |                         |
|                                                          |
|                                         1           3    |
|o5 : coherent sheaf on X, quotient of OO  (-2) ++ OO  (-3)|
|                                        X           X     |
+----------------------------------------------------------+
|i6 : Ext^1(IX,OO_X)                                       |
|                                                          |
|o6 = 0                                                    |
|                                                          |
|o6 : QQ-module                                            |
+----------------------------------------------------------+
|i7 : Hom(IX,OO_X)                                         |
|                                                          |
|       16                                                 |
|o7 = QQ                                                   |
|                                                          |
|o7 : QQ-module, free                                      |
+----------------------------------------------------------+
The Ext^1 being zero says that the point corresponding to I on the Hilbert
scheme is smooth (unobstructed), and vector space dimension of Hom tells us
that the dimension of the component at the point I is 16.

The method used may be found in: Smith, G., Computing global extension modules,
J. Symbolic Comp (2000) 29, 729-746

If the module $\oplus_{d\geq 0} Ext^i(M,N(d))$ is desired, see
Ext^ZZ(CoherentSheaf,SumOfTwists).

See also
========

  * resolution (Macaulay2Doc) -- projective resolution
  * Tor (Macaulay2Doc) -- Tor module
  * Hom (Macaulay2Doc) -- module of homomorphisms
  * HH (Macaulay2Doc) -- general homology and cohomology functor
  * sheafExt -- sheaf Ext of coherent sheaves
  * Ext^ZZ(CoherentSheaf,SumOfTwists)
    -- global Ext

Ways to use this method:
========================

  * Ext^ZZ(CoherentSheaf,CoherentSheaf)
    -- global Ext
  * "Ext^ZZ(CoherentSheaf,SheafOfRings)"
  * "Ext^ZZ(SheafOfRings,CoherentSheaf)"
  * "Ext^ZZ(SheafOfRings,SheafOfRings)"

Ext^ZZ(CoherentSheaf,SumOfTwists) -- global Ext
***********************************************

Synopsis
========

  * Scripted functor: Ext (Macaulay2Doc),
  * Usage:
        Ext^i(M,N(>=d))
  * Inputs:
      * i
      * M
      * N(>=d)
  * Outputs:
      * a module (Macaulay2Doc), The R-module $\oplus_{j \geq d}
        Ext^i_X(M,N(j))$

Description
===========

If M is a sheaf of rings, it is regarded as a sheaf of modules in the evident
way.

M and N must be coherent sheaves on the same projective variety or scheme X =
Proj R.

As an example, we consider the rational quartic curve in $P^3$.
+-----------------------------------------------------------------------------+
|i1 : S = QQ[a..d];                                                           |
+-----------------------------------------------------------------------------+
|i2 : I = monomialCurveIdeal(S,{1,3,4})                                       |
|                                                                             |
|                        3      2     2    2    3    2                        |
|o2 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)                      |
|                                                                             |
|o2 : Ideal of S                                                              |
+-----------------------------------------------------------------------------+
|i3 : R = S/I                                                                 |
|                                                                             |
|o3 = R                                                                       |
|                                                                             |
|o3 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i4 : X = Proj R                                                              |
|                                                                             |
|o4 = X                                                                       |
|                                                                             |
|o4 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i5 : IX = sheaf (module I ** R)                                              |
|                                                                             |
|o5 = cokernel {2} | c2 bd ac b2 |                                            |
|              {3} | -b -a 0  0  |                                            |
|              {3} | d  c  -b -a |                                            |
|              {3} | 0  0  -d -c |                                            |
|                                                                             |
|                                         1           3                       |
|o5 : coherent sheaf on X, quotient of OO  (-2) ++ OO  (-3)                   |
|                                        X           X                        |
+-----------------------------------------------------------------------------+
|i6 : Ext^1(IX,OO_X(>=-3))                                                    |
|                                                                             |
|o6 = cokernel {-3} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|              {-3} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|              {-3} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|              {-3} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 0 0 |
|              {-3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 |
|              {-3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 |
|              {-3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a |
|              {-3} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
|                                                                             |
|                            8                                                |
|o6 : R-module, quotient of R                                                 |
|-----------------------------------------------------------------------------|
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|0 0 0 0 |                                                                    |
|d c b a |                                                                    |
+-----------------------------------------------------------------------------+
|i7 : Ext^0(IX,OO_X(>=-10))                                                   |
|                                                                             |
|o7 = cokernel {-1} | c  0  0  b  0  a  0  0  -d  0  0  0   0  0   0  0  |    |
|              {-1} | -d c  a  0  0  0  b  0  0   0  0  0   0  0   0  0  |    |
|              {-1} | 0  -d -b 0  c  0  0  a  0   0  0  -d  0  0   0  0  |    |
|              {-1} | 0  0  0  -d -d -c -c -b 0   0  0  0   0  -d  0  0  |    |
|              {-1} | 0  0  0  0  0  0  0  0  c   0  0  b   0  a   0  0  |    |
|              {-1} | 0  0  0  0  0  0  0  0  -2d c  a  0   0  0   b  0  |    |
|              {-1} | 0  0  0  0  0  0  0  0  0   -d -b 0   c  0   0  a  |    |
|              {-1} | 0  0  0  0  0  0  0  0  0   0  0  -2d -d -2c -c -b |    |
|                                                                             |
|                            8                                                |
|o7 : R-module, quotient of R                                                 |
+-----------------------------------------------------------------------------+

The method used may be found in: Smith, G., Computing global extension modules,
J. Symbolic Comp (2000) 29, 729-746

If the vector space $Ext^i(M,N)$ is desired, see
Ext^ZZ(CoherentSheaf,CoherentSheaf).

See also
========

  * resolution (Macaulay2Doc) -- projective resolution
  * Tor (Macaulay2Doc) -- Tor module
  * Hom (Macaulay2Doc) -- module of homomorphisms
  * HH (Macaulay2Doc) -- general homology and cohomology functor
  * sheafExt -- sheaf Ext of coherent sheaves

Ways to use this method:
========================

  * Ext^ZZ(CoherentSheaf,SumOfTwists)
    -- global Ext
  * "Ext^ZZ(SheafOfRings,SumOfTwists)"

exteriorPower(ZZ,CoherentSheaf)
*******************************

Synopsis
========

  * Function: exteriorPower (Macaulay2Doc),
  * Usage:
        exteriorPower(i,F)
  * Inputs:
      * i
      * F
  * Optional inputs (Macaulay2Doc),:
      * Strategy (Macaulay2Doc),
        => ..., default value null,
  * Outputs:
      * the i-th exterior power of F

Ways to use this method:
========================

  * exteriorPower(ZZ,CoherentSheaf)

genera -- list of the successive linear sectional arithmetic genera
*******************************************************************

See also
========

  * genus (missing documentation)
  * hilbertPolynomial (Macaulay2Doc) -- compute the
    Hilbert polynomial
  * euler (missing documentation)

Ways to use genera:
===================

  * genera(CoherentSheaf)
  * "genera(Module)" -- see genera(CoherentSheaf),
  * genera(Ideal)
  * genera(ProjectiveVariety)
  * genera(Ring)

For the programmer
==================

The object genera, is a method function (Macaulay2Doc).

genera(CoherentSheaf)
*********************

Synopsis
========

  * Function: genera,
  * Usage:
        genera M
  * Inputs:
      * M
  * Outputs:
      * a list (Macaulay2Doc), of the successive linear sectional
        arithmetic genera of the successive generic hyperplane restrictions of
        M

Description
===========

Computes the list of successive generic linear sectional arithmetic genera,
where the i-th entry in the list is (-1)^dim-support -i  * (chi(M **
OO_lin-section) - 1)).
+--------------------------------------------------+
|i1 : V = Proj(ZZ/101[x_0..x_2]);                  |
+--------------------------------------------------+
|i2 : M = sheaf(image matrix {{x_0^3+x_1^3+x_2^3}})|
|                                                  |
|o2 = image | x_0^3+x_1^3+x_2^3 |                  |
|                                                  |
|                                         1        |
|o2 : coherent sheaf on V, subsheaf of OO          |
|                                        V         |
+--------------------------------------------------+
|i3 : genera M                                     |
|                                                  |
|o3 = {0, 3, 0}                                    |
|                                                  |
|o3 : List                                         |
+--------------------------------------------------+

See also
========

  * euler (missing documentation)

Ways to use this method:
========================

  * genera(CoherentSheaf)
  * "genera(Module)"

genera(Ideal)
*************

Synopsis
========

  * Function: genera,
  * Usage:
        genera I
  * Inputs:
      * I
  * Outputs:
      * a list (Macaulay2Doc), of the successive linear sectional
        arithmetic genera of I

Description
===========

Computes the list of successive linear sectional arithmetic genera, where the
i-th entry in the list is the arithmetic genus of the i-th successive generic
hyperplane section of the zero-locus of I (= (-1)^dim-lin-section *
(chi(OO_lin-section) - 1)).

A complete intersection of type (2,3) in projective fourspace; its hyperplane
section is a canonical curve of genus 4:
+--------------------------------------+
|i1 : R = ZZ/101[x_0..x_4];            |
+--------------------------------------+
|i2 : I = ideal random(R^1, R^{-2,-3});|
|                                      |
|o2 : Ideal of R                       |
+--------------------------------------+
|i3 : genera I                         |
|                                      |
|o3 = {1, 4, 5}                        |
|                                      |
|o3 : List                             |
+--------------------------------------+

See also
========

  * euler (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * genera(Ideal)

genera(ProjectiveVariety)
*************************

Synopsis
========

  * Function: genera,
  * Usage:
        genera V
  * Inputs:
      * V
  * Outputs:
      * a list (Macaulay2Doc), of the successive linear sectional
        arithmetic genera of V

Description
===========

Computes the list of successive linear sectional arithmetic genera, where the
i-th entry in the list is the arithmetic genus of the i-th successive generic
hyperplane section of V (= (-1)^dim-lin-section * (chi(OO_lin-section) - 1)).

A complete intersection of type (2,3) in projective fourspace; its hyperplane
section is a canonical curve of genus 4:
+------------------------------------------------+
|i1 : R = ZZ/101[x_0..x_4];                      |
+------------------------------------------------+
|i2 : V = Proj(R/(ideal random(R^1, R^{-2,-3})));|
+------------------------------------------------+
|i3 : genera V                                   |
|                                                |
|o3 = {1, 4, 5}                                  |
|                                                |
|o3 : List                                       |
+------------------------------------------------+

See also
========

  * euler (missing documentation)
  * genus (missing documentation)

Ways to use this method:
========================

  * genera(ProjectiveVariety)

genera(Ring)
************

Synopsis
========

  * Function: genera,
  * Usage:
        genera R
  * Inputs:
      * R
  * Outputs:
      * a list (Macaulay2Doc), of the successive linear sectional
        arithmetic genera of projective scheme V with homogeneous coordinate
        ring R

Description
===========

Computes the list of successive linear sectional arithmetic genera, where the
i-th entry in the list is the arithmetic genus of the i-th successive generic
hyperplane section of V (= (-1)^dim-lin-section * (chi(OO_lin-section) - 1)).
+--------------------------------------+
|i1 : R = ZZ/101[x_0..x_4];            |
+--------------------------------------+
|i2 : I = ideal random(R^1, R^{-2,-3});|
|                                      |
|o2 : Ideal of R                       |
+--------------------------------------+
|i3 : genera(R/I)                      |
|                                      |
|o3 = {1, 4, 5}                        |
|                                      |
|o3 : List                             |
+--------------------------------------+

See also
========

  * genus (missing documentation)
  * euler (missing documentation)

Ways to use this method:
========================

  * genera(Ring)

genus -- arithmetic genus
*************************

See also
========

  * genera (missing documentation)
  * euler (missing documentation)

Ways to use genus:
==================

  * genus(CoherentSheaf)
  * "genus(Ideal)" -- see genus(CoherentSheaf),
  * "genus(Module)" -- see genus(CoherentSheaf),
  * genus(ProjectiveVariety)
  * genus(Ring)

For the programmer
==================

The object genus, is a method function (Macaulay2Doc).

genus(CoherentSheaf)
********************

Synopsis
========

  * Function: genus,
  * Usage:
        genus F
  * Inputs:
      * F, a coherent sheaf, a module (Macaulay2Doc),
        or an ideal (Macaulay2Doc),
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the arithmetic genus of the coherent sheaf F that is (-1)^dim-support
* (chi(F) - 1)).  If F is a module over a ring, then the genus of F~ is
computed.  If I is an ideal in a ring R then the genus of (R/I)~ is computed.
+-----------------------------------------------+
|i1 : V = Proj(QQ[x,y,z]/ideal(y^2*z-x^2*(x+z)))|
|                                               |
|o1 = V                                         |
|                                               |
|o1 : ProjectiveVariety                         |
+-----------------------------------------------+
|i2 : genus OO_V^1                              |
|                                               |
|o2 = 1                                         |
+-----------------------------------------------+

See also
========

  * genera (missing documentation)
  * euler (missing documentation)

Ways to use this method:
========================

  * genus(CoherentSheaf)
  * "genus(Ideal)"
  * "genus(Module)"

genus(ProjectiveVariety)
************************

Synopsis
========

  * Function: genus,
  * Usage:
        genus V
  * Inputs:
      * V
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the arithmetic genus of the projective scheme VA nodal plane cubic
curve has arithmetic genus 1:
+-----------------------------------------------+
|i1 : V = Proj(QQ[a,b,c]/ideal(b^2*c-a^2*(a+c)))|
|                                               |
|o1 = V                                         |
|                                               |
|o1 : ProjectiveVariety                         |
+-----------------------------------------------+
|i2 : genus V                                   |
|                                               |
|o2 = 1                                         |
+-----------------------------------------------+
The Fano model of a Reye type Enriques surface in projective fivespace:
+-----------------------------------+
|i3 : R = ZZ/101[x_0..x_5];         |
+-----------------------------------+
|i4 : M = random(R^4, R^{4:-1});    |
|                                   |
|             4      4              |
|o4 : Matrix R  <-- R               |
+-----------------------------------+
|i5 : I = minors(3, M+transpose(M));|
|                                   |
|o5 : Ideal of R                    |
+-----------------------------------+
|i6 : V = Proj(R/I);                |
+-----------------------------------+
|i7 : genus V                       |
|                                   |
|o7 = 0                             |
+-----------------------------------+

See also
========

  * genera (missing documentation)
  * euler (missing documentation)

Ways to use this method:
========================

  * genus(ProjectiveVariety)

genus(Ring)
***********

Synopsis
========

  * Function: genus,
  * Usage:
        genus R
  * Inputs:
      * R
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

Computes the arithmetic genus of the projective scheme V with homogeneous
coordinate ring R
+-----------------------------------+
|i1 : R = QQ[x,y,z]/ideal(y^2*z-x^3)|
|                                   |
|o1 = R                             |
|                                   |
|o1 : QuotientRing                  |
+-----------------------------------+
|i2 : genus R                       |
|                                   |
|o2 = 1                             |
+-----------------------------------+

See also
========

  * genera (missing documentation)
  * euler (missing documentation)

Ways to use this method:
========================

  * genus(Ring)

GlobalSectionLimit
******************

For the programmer
==================

The object GlobalSectionLimit (missing documentation) is a symbol (Macaulay2Doc).

hh -- Hodge numbers of a smooth projective variety
**************************************************

Synopsis
========

  * Usage:
        hh^(p,q)(X)
  * Inputs:
      * a pair (p,q) of non negative integers
      * X, a projective variety,
  * Outputs:
      * an integer (Macaulay2Doc),

Description
===========

The command computes the Hodge numbers h^{p,q} of the smooth projective variety
X. They are calculated as HH^q(cotangentSheaf(p,X))

As an example we compute h^11 of a K3 surface (Fermat quartic in projective
threespace:
+----------------------------------------------------------+
|i1 : X = Proj(QQ[x_0..x_3]/ideal(x_0^4+x_1^4+x_2^4+x_3^4))|
|                                                          |
|o1 = X                                                    |
|                                                          |
|o1 : ProjectiveVariety                                    |
+----------------------------------------------------------+
|i2 : hh^(1,1)(X)                                          |
|                                                          |
|o2 = 20                                                   |
+----------------------------------------------------------+

Caveat
======

There is no check made if the projective variety X is smooth or not.

See also
========

  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module
  * HH^ZZ SheafOfRings -- cohomology of a sheaf of
    rings on a projective variety
  * euler(ProjectiveVariety), --
    topological Euler characteristic of a (smooth) projective variety

Ways to use hh:
===============

  * "hh(Sequence,ProjectiveVariety)"

For the programmer
==================

The object hh, is a scripted functor (Macaulay2Doc).

HH^ZZ SheafOfRings -- cohomology of a sheaf of rings on a projective variety
****************************************************************************

Synopsis
========

  * Function: cohomology (Macaulay2Doc),
  * Usage:
        HH^d(R)
  * Inputs:
      * i, an integer (Macaulay2Doc),
      * R, a sheaf of rings, on a projective variety X
  * Optional inputs (Macaulay2Doc),:
      * Degree (SimplicialComplexes),
        => ..., default value 0,
  * Outputs:
      * a module (Macaulay2Doc), the i-th cohomology group of R
        as a vector space over the coefficient field of X

Description
===========

The command computes the i-th cohomology group of R as a vector space over the
coefficient field of X.

+--------------------------------------------------------+
|i1 : Cubic = Proj(QQ[x_0..x_2]/ideal(x_0^3+x_1^3+x_2^3))|
|                                                        |
|o1 = Cubic                                              |
|                                                        |
|o1 : ProjectiveVariety                                  |
+--------------------------------------------------------+
|i2 : HH^1(OO_Cubic)                                     |
|                                                        |
|       1                                                |
|o2 = QQ                                                 |
|                                                        |
|o2 : QQ-module, free                                    |
+--------------------------------------------------------+

See also
========

  * coherent sheaves
  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module
  * HH^ZZ CoherentSheaf, --
    cohomology of a coherent sheaf on a projective variety
  * hh -- Hodge numbers of a smooth projective variety
  * CoherentSheaf -- the class of all coherent sheaves

Ways to use this method:
========================

  * HH^ZZ SheafOfRings -- cohomology of a sheaf of
    rings on a projective variety

HH^ZZ SumOfTwists -- coherent sheaf cohomology module
*****************************************************

Synopsis
========

  * Function: cohomology (Macaulay2Doc),
  * Usage:
        HH^i(F(>=d))
  * Inputs:
      * i
      * F(>=d), notation representing the sum of the twists F(n) for all n
        greater than or equal to d, where F is a coherent sheaf on a projective
        variety X.
  * Optional inputs (Macaulay2Doc),:
      * Degree (SimplicialComplexes),
        => ..., default value 0,
  * Outputs:
      * a module (Macaulay2Doc),  M over the homogeneous
        coordinate ring of the variety X which agrees, at least in degrees n
        greater than or equal to d, with the graded module that in degree n is
        thei-th cohomology group of F(n).

Description
===========

The command computes a module over the homogeneous coordinate ring of the
variety X which agrees, at least in degrees n greater than or equal to the
given d, with the graded module that in degree n is thei-th cohomology group of
F(n).

To discard the part of the module M of degree less than d, use the
truncate(ZZ,Module) (Truncations), command as
truncate(d,M).

Use HH^i(F(>d)) to request the twists strictly greater than n.

Note: use HH^i(F(*)) to try to compute the whole graded module.  The
computation will fail if the module is not finitely generated.

As a first example we look at the cohomology of line bundles on the projective
plane
+-------------------------------------------------------------------+
|i1 : X = Proj(QQ[x_0..x_2])                                        |
|                                                                   |
|o1 = X                                                             |
|                                                                   |
|o1 : ProjectiveVariety                                             |
+-------------------------------------------------------------------+
|i2 : HH^0(OO_X^1(>=0))                                             |
|                                                                   |
|                 1                                                 |
|o2 = (QQ[x ..x ])                                                  |
|          0   2                                                    |
|                                                                   |
|o2 : QQ[x ..x ]-module, free                                       |
|         0   2                                                     |
+-------------------------------------------------------------------+
|i3 : HH^1(OO_X^1(>=0))                                             |
|                                                                   |
|o3 = 0                                                             |
|                                                                   |
|o3 : QQ[x ..x ]-module                                             |
|         0   2                                                     |
+-------------------------------------------------------------------+
|i4 : HH^2(OO_X^1(>=-3)) -- this should change to * once implemented|
|                                                                   |
|o4 = cokernel {-3} | x_2 x_1 x_0 |                                 |
|                                                                   |
|                                                1                  |
|o4 : QQ[x ..x ]-module, quotient of (QQ[x ..x ])                   |
|         0   2                           0   2                     |
+-------------------------------------------------------------------+
|i5 : TruncDual = HH^2(OO_X^1(>=-4))                                |
|                                                                   |
|o5 = cokernel {-4} | x_2 x_1 0   0   x_0  0    0   0   |           |
|              {-4} | 0   0   x_2 x_0 0    x_1  0   0   |           |
|              {-4} | 0   0   0   0   -x_2 -x_2 x_1 x_0 |           |
|                                                                   |
|                                                3                  |
|o5 : QQ[x ..x ]-module, quotient of (QQ[x ..x ])                   |
|         0   2                           0   2                     |
+-------------------------------------------------------------------+
|i6 : hilbertFunction(-4, TruncDual)                                |
|                                                                   |
|o6 = 3                                                             |
+-------------------------------------------------------------------+
|i7 : hilbertFunction(-3, TruncDual)                                |
|                                                                   |
|o7 = 1                                                             |
+-------------------------------------------------------------------+

As a second example we compute the H^1 cohomology module T of the
Horrocks-Mumford bundle on the projective fourspace.  T is an artinian module
with Hilbert function (5,10,10,2):
+-----------------------------------------------------------------------------+
|i8 : R = QQ[x_0..x_4];                                                       |
+-----------------------------------------------------------------------------+
|i9 : a = {1,0,0,0,0}                                                         |
|                                                                             |
|o9 = {1, 0, 0, 0, 0}                                                         |
|                                                                             |
|o9 : List                                                                    |
+-----------------------------------------------------------------------------+
|i10 : b = {0,1,0,0,1}                                                        |
|                                                                             |
|o10 = {0, 1, 0, 0, 1}                                                        |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+
|i11 : c = {0,0,1,1,0}                                                        |
|                                                                             |
|o11 = {0, 0, 1, 1, 0}                                                        |
|                                                                             |
|o11 : List                                                                   |
+-----------------------------------------------------------------------------+
|i12 : M1 = matrix table(5,5, (i,j)-> x_((i+j)%5)*a_((i-j)%5))                |
|                                                                             |
|o12 = | x_0 0   0   0   0   |                                                |
|      | 0   x_2 0   0   0   |                                                |
|      | 0   0   x_4 0   0   |                                                |
|      | 0   0   0   x_1 0   |                                                |
|      | 0   0   0   0   x_3 |                                                |
|                                                                             |
|              5      5                                                       |
|o12 : Matrix R  <-- R                                                        |
+-----------------------------------------------------------------------------+
|i13 : M2 = matrix table(5,5, (i,j)-> x_((i+j)%5)*b_((i-j)%5))                |
|                                                                             |
|o13 = | 0   x_1 0   0   x_4 |                                                |
|      | x_1 0   x_3 0   0   |                                                |
|      | 0   x_3 0   x_0 0   |                                                |
|      | 0   0   x_0 0   x_2 |                                                |
|      | x_4 0   0   x_2 0   |                                                |
|                                                                             |
|              5      5                                                       |
|o13 : Matrix R  <-- R                                                        |
+-----------------------------------------------------------------------------+
|i14 : M3 = matrix table(5,5, (i,j)-> x_((i+j)%5)*c_((i-j)%5))                |
|                                                                             |
|o14 = | 0   0   x_2 x_3 0   |                                                |
|      | 0   0   0   x_4 x_0 |                                                |
|      | x_2 0   0   0   x_1 |                                                |
|      | x_3 x_4 0   0   0   |                                                |
|      | 0   x_0 x_1 0   0   |                                                |
|                                                                             |
|              5      5                                                       |
|o14 : Matrix R  <-- R                                                        |
+-----------------------------------------------------------------------------+
|i15 : M = M1 | M2 | M3;                                                      |
|                                                                             |
|              5      15                                                      |
|o15 : Matrix R  <-- R                                                        |
+-----------------------------------------------------------------------------+
|i16 : betti (C=res coker M)                                                  |
|                                                                             |
|             0  1  2  3  4 5                                                 |
|o16 = total: 5 15 29 37 20 2                                                 |
|          0: 5 15 10  2  . .                                                 |
|          1: .  .  4  .  . .                                                 |
|          2: .  . 15 35 20 .                                                 |
|          3: .  .  .  .  . 2                                                 |
|                                                                             |
|o16 : BettiTally                                                             |
+-----------------------------------------------------------------------------+
|i17 : N = transpose submatrix(C.dd_3,{10..28},{2..36});                      |
|                                                                             |
|              35      19                                                     |
|o17 : Matrix R   <-- R                                                       |
+-----------------------------------------------------------------------------+
|i18 : betti (D=res coker N)                                                  |
|                                                                             |
|              0  1  2  3  4 5                                                |
|o18 = total: 35 19 19 35 20 2                                                |
|         -5: 35 15  .  .  . .                                                |
|         -4:  .  4  .  .  . .                                                |
|         -3:  .  .  .  .  . .                                                |
|         -2:  .  .  .  .  . .                                                |
|         -1:  .  .  .  .  . .                                                |
|          0:  .  .  4  .  . .                                                |
|          1:  .  . 15 35 20 .                                                |
|          2:  .  .  .  .  . 2                                                |
|                                                                             |
|o18 : BettiTally                                                             |
+-----------------------------------------------------------------------------+
|i19 : Pfour = Proj(R)                                                        |
|                                                                             |
|o19 = Pfour                                                                  |
|                                                                             |
|o19 : ProjectiveVariety                                                      |
+-----------------------------------------------------------------------------+
|i20 : HorrocksMumford = sheaf(coker D.dd_3);                                 |
+-----------------------------------------------------------------------------+
|i21 : T = HH^1(HorrocksMumford(>=-1))                                        |
|                                                                             |
|o21 = cokernel {-1} | x_4 x_2  0   0   x_0  0   0    0    x_3 0   0   0      |
|               {-1} | 0   -x_3 x_1 0   0    x_4 x_2  0    0   0   0   x_0    |
|               {-1} | 0   0    0   x_3 -x_2 x_0 0    x_1  0   0   0   0      |
|               {-1} | 0   0    0   0   0    0   -x_4 -x_2 x_1 x_0 x_3 0      |
|               {-1} | 0   0    0   0   0    0   0    0    0   0   x_4 -x_3   |
|                                                                             |
|                             5                                               |
|o21 : R-module, quotient of R                                                |
|-----------------------------------------------------------------------------|
|0   0    x_1 |                                                               |
|0   0    0   |                                                               |
|0   -x_4 0   |                                                               |
|0   0    0   |                                                               |
|x_2 x_1  x_0 |                                                               |
+-----------------------------------------------------------------------------+
|i22 : apply(-1..2, i-> hilbertFunction(i,T))                                 |
|                                                                             |
|o22 = (5, 10, 10, 2)                                                         |
|                                                                             |
|o22 : Sequence                                                               |
+-----------------------------------------------------------------------------+

Caveat
======

The computation will fail if the module is not finitely generated. Also the
version HH^i(F(*)) is not yet implemented.

See also
========

  * HH (Macaulay2Doc) -- general homology and cohomology functor
  * HH^ZZ CoherentSheaf, --
    cohomology of a coherent sheaf on a projective variety
  * HH^ZZ Module (Macaulay2Doc) -- local cohomology of a
    module

Ways to use this method:
========================

  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module

HH^ZZ(ProjectiveVariety,CoherentSheaf) -- cohomology of a coherent sheaf on a projective variety
************************************************************************************************

Synopsis
========

  * Function: cohomology (Macaulay2Doc),
  * Usage:
        HH^i(X,F)
        HH^i F
        cohomology(i,X,F)
        cohomology(i,F)
  * Inputs:
      * i, an integer (Macaulay2Doc),
      * X, a projective variety,
      * F, a coherent sheaf, on the projective variety X
  * Optional inputs (Macaulay2Doc),:
      * Degree (SimplicialComplexes),
        => ..., default value 0,
  * Outputs:
      * a module (Macaulay2Doc), the i-th cohomology group of F
        as a vector space over the coefficient field of X

Description
===========

The command computes the i-th cohomology group of F as a vector space over the
coefficient field of X.  For i>0 this is currently done via local duality,
while for i=0 it is computed as a limit of Homs. Eventually there will exist an
alternative option for computing sheaf cohomology via the
Bernstein-Gelfand-Gelfand correspondence

As examples we compute the Picard numbers, Hodge numbers and dimension of the
infinitesimal deformation spaces of various quintic hypersurfaces in projective
fourspace (or their Calabi-Yau small resolutions)

We will make computations for quintics V in the family given by
$$x_0^5+x_1^5+x_2^5+x_3^5+x_4^5-5\lambda x_0x_1x_2x_3x_4=0$$ for various values
of $\lambda$. If $\lambda$ is general (that is, $\lambda$ not a 5-th root of
unity, 0 or $\infty$), then the quintic $V$ is smooth, so is a Calabi-Yau
threefold, and in that case the Hodge numbers are as follows.

$$h^{1,1}(V)=1,   h^{2,1}(V) = h^{1,2}(V) = 101,$$

so the Picard group of V has rank 1 (generated by the hyperplane section) and
the moduli space of V (which is unobstructed) has dimension 101:

+-----------------------------------------------------------------------------+
|i1 : Quintic = Proj(QQ[x_0..x_4]/ideal(x_0^5+x_1^5+x_2^5+x_3^5+x_4^5-101*x_0*|
|                                                                             |
|o1 = Quintic                                                                 |
|                                                                             |
|o1 : ProjectiveVariety                                                       |
|-----------------------------------------------------------------------------|
|x_1*x_2*x_3*x_4))                                                            |
+-----------------------------------------------------------------------------+
|i2 : singularLocus(Quintic)                                                  |
|                                                                             |
|         /QQ[x ..x ]\                                                        |
|         |    0   4 |                                                        |
|o2 = Proj|----------|                                                        |
|         \     1    /                                                        |
|                                                                             |
|o2 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i3 : omegaQuintic = cotangentSheaf(Quintic);                                 |
+-----------------------------------------------------------------------------+
|i4 : h11 = rank HH^1(omegaQuintic)                                           |
|                                                                             |
|o4 = 1                                                                       |
+-----------------------------------------------------------------------------+
|i5 : h12 = rank HH^2(omegaQuintic)                                           |
|                                                                             |
|o5 = 101                                                                     |
+-----------------------------------------------------------------------------+

By Hodge duality this is $h^{2,1}$.  Directly $h^{2,1}$ could be computed as

+-----------------------------------------------+
|i6 : h21 = rank HH^1(cotangentSheaf(2,Quintic))|
|                                               |
|o6 = 101                                       |
+-----------------------------------------------+

The Hodge numbers of a (smooth) projective variety can also be computed
directly using the hh, command:

+----------------------+
|i7 : hh^(2,1)(Quintic)|
|                      |
|o7 = 101              |
+----------------------+
|i8 : hh^(1,1)(Quintic)|
|                      |
|o8 = 1                |
+----------------------+

Using the Hodge number we compute the topological Euler characteristic of V:

+-------------------+
|i9 : euler(Quintic)|
|                   |
|o9 = -200          |
+-------------------+

When $\lambda$ is a 5th root of unity the quintic V is singular. It has 125
ordinary double points (nodes), namely the orbit of the point
$(1:\lambda:\lambda:\lambda:\lambda)$ under a natural action of $\ZZ/5^3$. Then
$V$ has a projective small resolution $W$ which is a Calabi-Yau threefold
(since the action of $\ZZ/5^3$ is transitive on the sets of nodes of $V$, or
for instance, just by blowing up one of the $(1,5)$ polarized abelian surfaces
$V$ contains). Perhaps the most interesting such 3-fold is the one for the
value $\lambda=1$, which is defined over $\QQ$ and is modular (see Schoen's
work). To compute the  Hodge numbers of the small resolution $W$ of $V$ we
proceed as follows:

+-----------------------------------------------------------------------------+
|i10 : SchoensQuintic = Proj(QQ[x_0..x_4]/ideal(x_0^5+x_1^5+x_2^5+x_3^5+x_4^5-|
|                                                                             |
|o10 = SchoensQuintic                                                         |
|                                                                             |
|o10 : ProjectiveVariety                                                      |
|-----------------------------------------------------------------------------|
|5*x_0*x_1*x_2*x_3*x_4))                                                      |
+-----------------------------------------------------------------------------+
|i11 : Z = singularLocus(SchoensQuintic)                                      |
|                                                                             |
|o11 = Z                                                                      |
|                                                                             |
|o11 : ProjectiveVariety                                                      |
+-----------------------------------------------------------------------------+
|i12 : degree Z                                                               |
|                                                                             |
|o12 = 125                                                                    |
+-----------------------------------------------------------------------------+
|i13 : II'Z = sheaf module ideal Z                                            |
|                                                                             |
|o13 = image | x_3^4-x_0x_1x_2x_4 x_0x_1x_2x_3-x_4^4 x_2^4-x_0x_1x_3x_4 x_1^4-|
|                                                                             |
|                                                                        1    |
|o13 : coherent sheaf on Proj(QQ[x ..x ]), subsheaf of OO                     |
|                                 0   4                  Proj(QQ[x ..x ])     |
|                                                                 0   4       |
|-----------------------------------------------------------------------------|
|x_0x_2x_3x_4 x_0^4-x_1x_2x_3x_4 x_2^3x_3^3-x_0^2x_1^2x_4^2                   |
|-----------------------------------------------------------------------------|
|x_1^3x_3^3-x_0^2x_2^2x_4^2 x_0^3x_3^3-x_1^2x_2^2x_4^2                        |
|-----------------------------------------------------------------------------|
|x_1^2x_2^2x_3^2-x_0^3x_4^3 x_0^2x_2^2x_3^2-x_1^3x_4^3                        |
|-----------------------------------------------------------------------------|
|x_0^2x_1^2x_3^2-x_2^3x_4^3 x_1^3x_2^3-x_0^2x_3^2x_4^2                        |
|-----------------------------------------------------------------------------|
|x_0^3x_2^3-x_1^2x_3^2x_4^2 x_0^2x_1^2x_2^2-x_3^3x_4^3                        |
|-----------------------------------------------------------------------------|
|x_0^3x_1^3-x_2^2x_3^2x_4^2 |                                                 |
+-----------------------------------------------------------------------------+

The defect of $W$ (that is, $h^{1,1}(W)-1$) can be computed from the cohomology
of the ideal sheaf of the singular locus Z of V twisted by 5 (see Werner's
thesis):

+---------------------------------+
|i14 : defect = rank HH^1(II'Z(5))|
|                                 |
|o14 = 24                         |
+---------------------------------+
|i15 : h11 = defect + 1           |
|                                 |
|o15 = 25                         |
+---------------------------------+

The number $h^{2,1}(W)$ (the dimension of the moduli space of $W$) can be
computed (Clemens-Griffiths, Werner) as $\dim H^0({\mathbf
I}_Z(5))/JacobianIdeal(V)_5$.

+---------------------------------------------------+
|i16 : quinticsJac = numgens source basis(5,ideal Z)|
|                                                   |
|o16 = 25                                           |
+---------------------------------------------------+
|i17 : h21 = rank HH^0(II'Z(5)) - quinticsJac       |
|                                                   |
|o17 = 0                                            |
+---------------------------------------------------+

In other words W is rigid. It has the following topological Euler
characteristic.

+---------------------------------------+
|i18 : chiW = euler(Quintic)+2*degree(Z)|
|                                       |
|o18 = 50                               |
+---------------------------------------+

See also
========

  * coherent sheaves
  * HH^ZZ SumOfTwists -- coherent sheaf cohomology
    module
  * HH^ZZ SheafOfRings -- cohomology of a sheaf of
    rings on a projective variety
  * hh -- Hodge numbers of a smooth projective variety
  * CoherentSheaf -- the class of all coherent sheaves

Ways to use this method:
========================

  * "HH^ZZ CoherentSheaf"
  * HH^ZZ(ProjectiveVariety,CoherentSheaf)
    -- cohomology of a coherent
    sheaf on a projective variety

hilbertPolynomial(CoherentSheaf) -- compute the Hilbert polynomial of the coherent sheaf
****************************************************************************************

Synopsis
========

  * Function: hilbertPolynomial (Macaulay2Doc),
  * Usage:
        hilbertPolynomial S
  * Inputs:
      * S
  * Optional inputs (Macaulay2Doc),:
      * Projective (Macaulay2Doc),
        => ..., default value true,
  * Outputs:
      * a projective Hilbert polynomial (Macaulay2Doc),
        unless the option
        Projective is false

Description
===========

We compute the Hilbert polynomial (Macaulay2Doc), of a
coherent sheaf.
+--------------------------------------------------+
|i1 : R = ZZ/101[x_0..x_2];                        |
+--------------------------------------------------+
|i2 : V = Proj R;                                  |
+--------------------------------------------------+
|i3 : S = sheaf(image matrix {{x_0^3+x_1^3+x_2^3}})|
|                                                  |
|o3 = image | x_0^3+x_1^3+x_2^3 |                  |
|                                                  |
|                                         1        |
|o3 : coherent sheaf on V, subsheaf of OO          |
|                                        V         |
+--------------------------------------------------+
|i4 : h = hilbertPolynomial S                      |
|                                                  |
|o4 = 3*P  - 3*P  + P                              |
|        0      1    2                             |
|                                                  |
|o4 : ProjectiveHilbertPolynomial                  |
+--------------------------------------------------+
|i5 : hilbertPolynomial(S, Projective=>false)      |
|                                                  |
|     1 2   3                                      |
|o5 = -i  - -i + 1                                 |
|     2     2                                      |
|                                                  |
|o5 : QQ[i]                                        |
+--------------------------------------------------+

Ways to use this method:
========================

  * hilbertPolynomial(CoherentSheaf)
    -- compute the Hilbert polynomial of
    the coherent sheaf

hilbertPolynomial(ProjectiveVariety) -- compute the Hilbert polynomial of the projective variety
************************************************************************************************

Synopsis
========

  * Function: hilbertPolynomial (Macaulay2Doc),
  * Usage:
        hilbertPolynomial V
  * Inputs:
      * V, a projective variety,
  * Optional inputs (Macaulay2Doc),:
      * Projective (Macaulay2Doc),
        => ..., default value true,
  * Outputs:
      * a projective Hilbert polynomial (Macaulay2Doc),
        unless the option
        Projective is false

Description
===========

We compute an example of the Hilbert polynomial (Macaulay2Doc),
of a projective Hilbert variety. This is the
same as the Hilbert polynomial of its coordinate ring.
+--------------------------------------------+
|i1 : R = QQ[a..d];                          |
+--------------------------------------------+
|i2 : I = monomialCurveIdeal(R, {1,3,4});    |
|                                            |
|o2 : Ideal of R                             |
+--------------------------------------------+
|i3 : V = Proj(R/I)                          |
|                                            |
|o3 = V                                      |
|                                            |
|o3 : ProjectiveVariety                      |
+--------------------------------------------+
|i4 : h = hilbertPolynomial V                |
|                                            |
|o4 = - 3*P  + 4*P                           |
|          0      1                          |
|                                            |
|o4 : ProjectiveHilbertPolynomial            |
+--------------------------------------------+
|i5 : hilbertPolynomial(V, Projective=>false)|
|                                            |
|o5 = 4i + 1                                 |
|                                            |
|o5 : QQ[i]                                  |
+--------------------------------------------+

These Hilbert polynomials can serve as Hilbert functions (Macaulay2Doc),
too since the values of the Hilbert polynomial
eventually are the same as the Hilbert function of the sheaf of rings or of the
underlying ring.
+--------------------------------------------+
|i6 : apply(5, k-> h(k))                     |
|                                            |
|o6 = {1, 5, 9, 13, 17}                      |
|                                            |
|o6 : List                                   |
+--------------------------------------------+
|i7 : apply(5, k-> hilbertFunction(k,ring V))|
|                                            |
|o7 = {1, 4, 9, 13, 17}                      |
|                                            |
|o7 : List                                   |
+--------------------------------------------+

Ways to use this method:
========================

  * hilbertPolynomial(ProjectiveVariety)
    -- compute the Hilbert polynomial
    of the projective variety

Hom(CoherentSheaf,CoherentSheaf) -- global Hom
**********************************************

Synopsis
========

  * Function: Hom (Macaulay2Doc),
  * Usage:
        Hom(F,G)
  * Inputs:
      * F
      * G, both should be sheaves on a projective variety or scheme X = Proj R
  * Optional inputs (Macaulay2Doc),:
      * DegreeLimit (Macaulay2Doc), => ..., default value null,
      * MinimalGenerators (Macaulay2Doc), => ..., default value true,
      * Strategy (Macaulay2Doc), => ..., default value null,
  * Outputs:
      * a module (Macaulay2Doc), over the coefficient field of R

Description
===========

If F or G is a sheaf of rings, it is regarded as a sheaf of modules in the
evident way.

+-------------------------------------------------------+
|i1 : R = QQ[a..d];                                     |
+-------------------------------------------------------+
|i2 : P3 = Proj R                                       |
|                                                       |
|o2 = P3                                                |
|                                                       |
|o2 : ProjectiveVariety                                 |
+-------------------------------------------------------+
|i3 : I = monomialCurveIdeal(R,{1,3,4})                 |
|                                                       |
|                        3      2     2    2    3    2  |
|o3 = ideal (b*c - a*d, c  - b*d , a*c  - b d, b  - a c)|
|                                                       |
|o3 : Ideal of R                                        |
+-------------------------------------------------------+
|i4 : G = sheaf module I                                |
|                                                       |
|o4 = image | bc-ad c3-bd2 ac2-b2d b3-a2c |             |
|                                                       |
|                                           1           |
|o4 : coherent sheaf on P3, subsheaf of OO              |
|                                         P3            |
+-------------------------------------------------------+
|i5 : Hom(OO_P3,G(3))                                   |
|                                                       |
|       7                                               |
|o5 = QQ                                                |
|                                                       |
|o5 : QQ-module, free                                   |
+-------------------------------------------------------+
|i6 : HH^0(G(3))                                        |
|                                                       |
|       7                                               |
|o6 = QQ                                                |
|                                                       |
|o6 : QQ-module, free                                   |
+-------------------------------------------------------+

See also
========

  * sheafHom -- sheaf Hom
  * Ext (Macaulay2Doc) -- compute an Ext module
  * sheafExt -- sheaf Ext of coherent sheaves

Ways to use this method:
========================

  * Hom(CoherentSheaf,CoherentSheaf)
    -- global Hom
  * "Hom(CoherentSheaf,SheafOfRings)"
  * "Hom(SheafOfRings,CoherentSheaf)"
  * "Hom(SheafOfRings,SheafOfRings)"

ideal(Variety) -- returns the defining ideal
********************************************

Synopsis
========

  * Function: ideal (Macaulay2Doc),
  * Usage:
        ideal X
  * Inputs:
      * X
  * Outputs:
      * an ideal (Macaulay2Doc), which is the defining ideal of X

Description
===========

A variety, is defined by a ring (Macaulay2Doc).
This function returns the defining ideal of the ring of X.
+--------------------------------------------+
|i1 : R = QQ[w,x,y,z];                       |
+--------------------------------------------+
|i2 : X = Spec(R/(y^2-x*z,x^2*y-z^2,x^3-y*z))|
|                                            |
|o2 = X                                      |
|                                            |
|o2 : AffineVariety                          |
+--------------------------------------------+
|i3 : ideal X                                |
|                                            |
|             2         2     2   3          |
|o3 = ideal (y  - x*z, x y - z , x  - y*z)   |
|                                            |
|o3 : Ideal of R                             |
+--------------------------------------------+
|i4 : ring X                                 |
|                                            |
|                    R                       |
|o4 = ------------------------------         |
|       2         2     2   3                |
|     (y  - x*z, x y - z , x  - y*z)         |
|                                            |
|o4 : QuotientRing                           |
+--------------------------------------------+
|i5 : Y = Proj(R/(x^2-w*y, x*y-w*z, x*z-y^2))|
|                                            |
|o5 = Y                                      |
|                                            |
|o5 : ProjectiveVariety                      |
+--------------------------------------------+
|i6 : ideal Y                                |
|                                            |
|             2                      2       |
|o6 = ideal (x  - w*y, x*y - w*z, - y  + x*z)|
|                                            |
|o6 : Ideal of R                             |
+--------------------------------------------+

See also
========

  * ring (Macaulay2Doc) -- get the associated ring of an object
  * ideal(Ring) (Macaulay2Doc) -- returns the defining
    ideal
  * Spec -- make an affine variety
  * AffineVariety -- the class of all affine varieties
  * Proj -- make a projective variety
  * ProjectiveVariety -- the class of all projective
    varieties

Ways to use this method:
========================

  * ideal(Variety) -- returns the defining ideal

isLiftable
**********

Ways to use isLiftable:
=======================

  * isLiftable(Matrix,Matrix) (missing documentation)
  * isLiftable(SheafMap,ZZ) (missing documentation)

For the programmer
==================

The object isLiftable (missing documentation) is a method function (Macaulay2Doc).

isProjective
************

Ways to use isProjective:
=========================

  * isProjective(ProjectiveVariety) (missing documentation)
  * isProjective(Variety) (missing documentation)

For the programmer
==================

The object isProjective (missing documentation) is a method function (Macaulay2Doc).

LowerBound -- the class of lower bound objects
**********************************************

Description
===========

This is a type of list that represents a lower bound.  The single element of
the list is an integer, and the object represents the condition that some other
integer, such as the index in a direct sum, should be at least as large.
+-------------------+
|i1 : LowerBound {4}|
|                   |
|o1 = LowerBound{4} |
|                   |
|o1 : LowerBound    |
+-------------------+
|i2 : >= 4          |
|                   |
|o2 = LowerBound{4} |
|                   |
|o2 : LowerBound    |
+-------------------+
|i3 : > 4           |
|                   |
|o3 = LowerBound{5} |
|                   |
|o3 : LowerBound    |
+-------------------+

Functions and methods returning an object of class LowerBound:
==============================================================

  * "> InfiniteNumber" -- see > ZZ,
  * > ZZ
  * >= List (missing documentation)
  * ">= InfiniteNumber" -- see >= ZZ,
  * >= ZZ

Methods that use an object of class LowerBound:
===============================================

  * "CoherentSheaf LowerBound"
  * "SheafOfRings LowerBound"

For the programmer
==================

The object LowerBound, is a self initializing type (Macaulay2Doc),
with ancestor classes BasicList (Macaulay2Doc),
< Thing (Macaulay2Doc).

module(CoherentSheaf) -- get the module defining a coherent sheaf
*****************************************************************

Synopsis
========

  * Function: module (Macaulay2Doc),
  * Usage:
        module F
  * Inputs:
      * F
  * Outputs:
      * the module from which the coherent sheaf F was defined

Description
===========

+----------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : F = OO_X(3)                        |
|                                        |
|        1                               |
|o2 = OO  (3)                            |
|       X                                |
|                                        |
|o2 : coherent sheaf on X, free of rank 1|
+----------------------------------------+
|i3 : module F                           |
|                                        |
|               1                        |
|o3 = (QQ[x..z])                         |
|                                        |
|o3 : QQ[x..z]-module, free, degrees {-3}|
+----------------------------------------+
|i4 : degrees oo                         |
|                                        |
|o4 = {{-3}}                             |
|                                        |
|o4 : List                               |
+----------------------------------------+

See also
========

  * OO -- the structure sheaf
  * degrees (Macaulay2Doc) -- degrees of generators
  * Proj -- make a projective variety

Ways to use this method:
========================

  * module(CoherentSheaf) -- get the module
    defining a coherent sheaf

module(SheafOfRings)
********************

Synopsis
========

  * Function: module (Macaulay2Doc),
  * Usage:
        module F
  * Inputs:
      * F
  * Outputs:
      * the module corresponding to F

Description
===========

+----------------------------------------+
|i1 : R = QQ[x..z]                       |
|                                        |
|o1 = R                                  |
|                                        |
|o1 : PolynomialRing                     |
+----------------------------------------+
|i2 : X = Proj R                         |
|                                        |
|o2 = X                                  |
|                                        |
|o2 : ProjectiveVariety                  |
+----------------------------------------+
|i3 : OO_X^6                             |
|                                        |
|        6                               |
|o3 = OO                                 |
|       X                                |
|                                        |
|o3 : coherent sheaf on X, free of rank 6|
+----------------------------------------+
|i4 : module oo                          |
|                                        |
|      6                                 |
|o4 = R                                  |
|                                        |
|o4 : R-module, free                     |
+----------------------------------------+

See also
========

  * Variety -- the class of all algebraic varieties
  * OO -- the structure sheaf

Ways to use this method:
========================

  * module(SheafOfRings)

numgens(CoherentSheaf) -- the number of generators of the underlying module
***************************************************************************

Synopsis
========

  * Function: numgens (Macaulay2Doc),
  * Usage:
        numgens F
  * Inputs:
      * F
  * Outputs:
      * an integer (Macaulay2Doc), number of generators of the
        underlying module M of F

Description
===========

In Macaulay2, each coherent sheaf comes equipped with a module over the
coordinate ring.  In the homogeneous case, this is not necessarily the number
of generators of the sum of twists H^0(F(d)), summed over all d, which in fact
could be infinitely generated.
+-----------------------------------------------+
|i1 : R = QQ[a..d]/(a^3+b^3+c^3+d^3)            |
|                                               |
|o1 = R                                         |
|                                               |
|o1 : QuotientRing                              |
+-----------------------------------------------+
|i2 : X = Proj R;                               |
+-----------------------------------------------+
|i3 : T' = cotangentSheaf X                     |
|                                               |
|o3 = cokernel {2} | c  0  0  d  0   a2  b2 0  ||
|              {2} | a  d  0  0  b2  -c2 0  0  ||
|              {2} | -b 0  d  0  a2  0   c2 0  ||
|              {2} | 0  b  a  0  -d2 0   0  c2 ||
|              {2} | 0  -c 0  a  0   -d2 0  b2 ||
|              {2} | 0  0  -c -b 0   0   d2 a2 ||
|                                               |
|                                         6     |
|o3 : coherent sheaf on X, quotient of OO  (-2) |
|                                        X      |
+-----------------------------------------------+
|i4 : numgens T'                                |
|                                               |
|o4 = 6                                         |
+-----------------------------------------------+
|i5 : module T'                                 |
|                                               |
|o5 = cokernel {2} | c  0  0  d  0   a2  b2 0  ||
|              {2} | a  d  0  0  b2  -c2 0  0  ||
|              {2} | -b 0  d  0  a2  0   c2 0  ||
|              {2} | 0  b  a  0  -d2 0   0  c2 ||
|              {2} | 0  -c 0  a  0   -d2 0  b2 ||
|              {2} | 0  0  -c -b 0   0   d2 a2 ||
|                                               |
|                            6                  |
|o5 : R-module, quotient of R                   |
+-----------------------------------------------+

See also
========

  * module(CoherentSheaf) -- get the module
    defining a coherent sheaf
  * tangentSheaf -- tangent sheaf of a projective variety

Ways to use this method:
========================

  * numgens(CoherentSheaf) -- the number of
    generators of the underlying module

OO -- the structure sheaf
*************************

Synopsis
========

  * Usage:
        OO_X
  * Inputs:
      * X, a variety
  * Outputs:
      * the structure sheaf of X.

Description
===========

+--------------------------------------------+
|i1 : R = QQ[x,y,z]/(y^2*z-x*(x-z)*(x-37*z));|
+--------------------------------------------+
|i2 : X = Proj R                             |
|                                            |
|o2 = X                                      |
|                                            |
|o2 : ProjectiveVariety                      |
+--------------------------------------------+
|i3 : OO_X                                   |
|                                            |
|o3 = OO                                     |
|       X                                    |
|                                            |
|o3 : SheafOfRings                           |
+--------------------------------------------+
|i4 : HH^1(OO_X)                             |
|                                            |
|       1                                    |
|o4 = QQ                                     |
|                                            |
|o4 : QQ-module, free                        |
+--------------------------------------------+
|i5 : HH^0(OO_X(3))                          |
|                                            |
|       9                                    |
|o5 = QQ                                     |
|                                            |
|o5 : QQ-module, free                        |
+--------------------------------------------+

See also
========

  * CoherentSheaf -- the class of all coherent sheaves
  * cohomology (Macaulay2Doc) -- general cohomology functor

For the programmer
==================

The object OO, is a scripted functor (Macaulay2Doc).

pdim(CoherentSheaf) -- calculate the projective dimension
*********************************************************

Synopsis
========

  * Function: pdim (Macaulay2Doc),
  * Usage:
        pdim S
  * Inputs:
      * S, a coherent sheaf,
  * Outputs:
      * an integer (Macaulay2Doc), the projective dimension

Description
===========

+--------------------------------------------------+
|i1 : V = Proj(ZZ/101[x_0..x_2]);                  |
+--------------------------------------------------+
|i2 : S = sheaf(image matrix {{x_0^3+x_1^3+x_2^3}})|
|                                                  |
|o2 = image | x_0^3+x_1^3+x_2^3 |                  |
|                                                  |
|                                         1        |
|o2 : coherent sheaf on V, subsheaf of OO          |
|                                        V         |
+--------------------------------------------------+
|i3 : pdim S                                       |
|                                                  |
|o3 = 0                                            |
+--------------------------------------------------+

Ways to use this method:
========================

  * pdim(CoherentSheaf) -- calculate the
    projective dimension

Proj -- make a projective variety
*********************************

Synopsis
========

  * Usage:
        Proj R
  * Inputs:
      * R
  * Outputs:
      * the projective variety (or scheme) formed from the graded ring R

Description
===========

+----------------------+
|i1 : R = QQ[x,y];     |
+----------------------+
|i2 : Proj R           |
|                      |
|o2 = Proj R           |
|                      |
|o2 : ProjectiveVariety|
+----------------------+

Ways to use Proj:
=================

  * "Proj(Ring)"

For the programmer
==================

The object Proj, is a method function (Macaulay2Doc).

ring(CoherentSheaf) -- the coordinate ring of the underlying variety
********************************************************************

Synopsis
========

  * Function: ring (Macaulay2Doc),

Ways to use this method:
========================

  * ring(CoherentSheaf) -- the coordinate ring
    of the underlying variety
  * "ring(SheafOfRings)"
  * "ring(SumOfTwists)"

ring(Variety) -- coordinate ring of the variety
***********************************************

Synopsis
========

  * Function: ring (Macaulay2Doc),

Ways to use this method:
========================

  * ring(Variety) -- coordinate ring of the variety

SaturationMap
*************

For the programmer
==================

The object SaturationMap (missing documentation) is a symbol (Macaulay2Doc).

sheaf -- make a coherent sheaf
******************************

Ways to use sheaf:
==================

  * sheaf(Module) -- make a coherent sheaf
  * sheaf(Ring) -- make a coherent sheaf of rings
  * sheaf(Variety) -- make a coherent sheaf
  * sheaf(Variety,Module) -- make a
    coherent sheaf
  * sheaf(Variety,Ring) -- make a coherent
    sheaf of rings

For the programmer
==================

The object sheaf, is a method function (Macaulay2Doc).

sheaf(Module) -- make a coherent sheaf
**************************************

Synopsis
========

  * Function: sheaf,
  * Usage:
        sheaf M
        M~
  * Inputs:
      * M, homogeneous
  * Outputs:
      * the coherent sheaf on a projective variety X corresponding to M

Description
===========

+-----------------------------------------+
|i1 : R = QQ[x,y,z];                      |
+-----------------------------------------+
|i2 : X = Proj R                          |
|                                         |
|o2 = X                                   |
|                                         |
|o2 : ProjectiveVariety                   |
+-----------------------------------------+
|i3 : M = R^{1,2,3}                       |
|                                         |
|      3                                  |
|o3 = R                                   |
|                                         |
|o3 : R-module, free, degrees {-1, -2, -3}|
+-----------------------------------------+
|i4 : sheaf M                             |
|                                         |
|        1          1          1          |
|o4 = OO  (1) ++ OO  (2) ++ OO  (3)       |
|       X          X          X           |
|                                         |
|o4 : coherent sheaf on X, free of rank 3 |
+-----------------------------------------+
|i5 : M~                                  |
|                                         |
|        1          1          1          |
|o5 = OO  (1) ++ OO  (2) ++ OO  (3)       |
|       X          X          X           |
|                                         |
|o5 : coherent sheaf on X, free of rank 3 |
+-----------------------------------------+

Ways to use this method:
========================

  * sheaf(Module) -- make a coherent sheaf

sheaf(Ring) -- make a coherent sheaf of rings
*********************************************

Synopsis
========

  * Function: sheaf,
  * Usage:
        sheaf R
        R~
  * Inputs:
      * R
  * Outputs:
      * the coherent sheaf on a projective variety X corresponding to M

Description
===========

+----------------------+
|i1 : R = QQ[x,y,z];   |
+----------------------+
|i2 : X = Proj R       |
|                      |
|o2 = X                |
|                      |
|o2 : ProjectiveVariety|
+----------------------+
|i3 : sheaf R          |
|                      |
|o3 = OO               |
|       X              |
|                      |
|o3 : SheafOfRings     |
+----------------------+
|i4 : R~               |
|                      |
|o4 = OO               |
|       X              |
|                      |
|o4 : SheafOfRings     |
+----------------------+

Ways to use this method:
========================

  * sheaf(Ring) -- make a coherent sheaf of rings

sheaf(Variety) -- make a coherent sheaf
***************************************

Synopsis
========

  * Function: sheaf,
  * Usage:
        sheaf X
  * Inputs:
      * X
  * Outputs:
      * the structure sheaf of rings on the variety X

Description
===========

+----------------------+
|i1 : R = QQ[x,y,z]    |
|                      |
|o1 = R                |
|                      |
|o1 : PolynomialRing   |
+----------------------+
|i2 : X = Proj R       |
|                      |
|o2 = X                |
|                      |
|o2 : ProjectiveVariety|
+----------------------+
|i3 : Y = Spec R       |
|                      |
|o3 = Y                |
|                      |
|o3 : AffineVariety    |
+----------------------+
|i4 : sheaf X          |
|                      |
|o4 = OO               |
|       X              |
|                      |
|o4 : SheafOfRings     |
+----------------------+
|i5 : sheaf Y          |
|                      |
|o5 = OO               |
|       Y              |
|                      |
|o5 : SheafOfRings     |
+----------------------+

Ways to use this method:
========================

  * sheaf(Variety) -- make a coherent sheaf

sheaf(Variety,Module) -- make a coherent sheaf
**********************************************

Synopsis
========

  * Function: sheaf,
  * Usage:
        sheaf(X,M)
  * Inputs:
      * X
      * M
  * Outputs:
      * the coherent sheaf on the variety X corresponding to the module M

Description
===========

If X is the affine variety Spec R, then M should be an R-module.  If X is the
projective variety Proj R, then M should be a homogeneous R-module.

Ways to use this method:
========================

  * sheaf(Variety,Module) -- make a
    coherent sheaf

sheaf(Variety,Ring) -- make a coherent sheaf of rings
*****************************************************

Synopsis
========

  * Function: sheaf,

Description
===========

sheaf(X,R) -- produce the coherent sheaf on the variety X corresponding to the
ring R.  The variety X must be Spec R or Proj R.
+----------------------+
|i1 : R = QQ[x,y,z]    |
|                      |
|o1 = R                |
|                      |
|o1 : PolynomialRing   |
+----------------------+
|i2 : X = Proj R       |
|                      |
|o2 = X                |
|                      |
|o2 : ProjectiveVariety|
+----------------------+
|i3 : Y = Spec R       |
|                      |
|o3 = Y                |
|                      |
|o3 : AffineVariety    |
+----------------------+
|i4 : sheaf(X,R)       |
|                      |
|o4 = OO               |
|       X              |
|                      |
|o4 : SheafOfRings     |
+----------------------+
|i5 : sheaf(Y,R)       |
|                      |
|o5 = OO               |
|       Y              |
|                      |
|o5 : SheafOfRings     |
+----------------------+

Ways to use this method:
========================

  * sheaf(Variety,Ring) -- make a coherent
    sheaf of rings

SheafExpression -- the class of sheaf expressions
*************************************************

Description
===========

SheafExpression is a type of Expression (Macaulay2Doc),
representing the sheaf associated to a given ring or module.

For the programmer
==================

The object SheafExpression, is a wrapper type (Macaulay2Doc),
with ancestor classes Expression (Macaulay2Doc),
< BasicList (Macaulay2Doc) <
Thing (Macaulay2Doc).

sheafExt -- sheaf Ext of coherent sheaves
*****************************************

Synopsis
========

  * Usage:
        sheafExt^n(F,G)
  * Inputs:
      * n
      * F
      * G
  * Outputs:
      * a coherent sheaf, the n-th sheaf Ext of F and G

Description
===========

If F or G is a sheaf of rings, it is regarded as a sheaf of modules in the
evident way.

F and G must be coherent sheaves on the same projective variety or scheme X.

The result is the sheaf associated to the graded module Ext^n(module M, module
N).
+----------------------------------------+
|i1 : X = Proj(QQ[x,y])                  |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : sheafExt^1(OO_X^1(2),OO_X(-11)^1)  |
|                                        |
|o2 = 0                                  |
|                                        |
|o2 : coherent sheaf on X, free of rank 0|
+----------------------------------------+

See also
========

  * OO -- the structure sheaf
  * sheafHom -- sheaf Hom
  * Hom (Macaulay2Doc) -- module of homomorphisms
  * Ext (Macaulay2Doc) -- compute an Ext module
  * HH (Macaulay2Doc) -- general homology and cohomology functor
  * Ext^ZZ(CoherentSheaf,CoherentSheaf)
    -- global Ext

Ways to use sheafExt:
=====================

  * "sheafExt^ZZ(CoherentSheaf,CoherentSheaf)"
  * "sheafExt^ZZ(CoherentSheaf,SheafOfRings)"
  * "sheafExt^ZZ(SheafOfRings,CoherentSheaf)"
  * "sheafExt^ZZ(SheafOfRings,SheafOfRings)"

For the programmer
==================

The object sheafExt, is a scripted functor (Macaulay2Doc).

sheafHom -- sheaf Hom
*********************

Synopsis
========

  * Usage:
        sheafHom(M,N)
  * Inputs:
      * M
      * N
  * Optional inputs (Macaulay2Doc),:
      * DegreeLimit (missing documentation) => ..., default value null,
      * MinimalGenerators (missing documentation) => ..., default value true,
      * Strategy (missing documentation) => ..., default value null,
  * Outputs:
      * the coherent sheaf of homomorphisms from M to N

Description
===========

If M or N is a sheaf of rings, it is regarded as a sheaf of modules in the
evident way.

M and N must be coherent sheaves on the same projective variety or scheme X.

The result is the sheaf associated to the graded module Hom(module M, module
N).
+----------------------------------------+
|i1 : X = Proj(QQ[x,y])                  |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : sheafHom(OO_X^1(2),OO_X(11)^1)     |
|                                        |
|        1                               |
|o2 = OO  (9)                            |
|       X                                |
|                                        |
|o2 : coherent sheaf on X, free of rank 1|
+----------------------------------------+

See also
========

  * OO -- the structure sheaf
  * sheafExt -- sheaf Ext of coherent sheaves
  * Hom (Macaulay2Doc) -- module of homomorphisms
  * Ext (Macaulay2Doc) -- compute an Ext module
  * HH (Macaulay2Doc) -- general homology and cohomology functor
  * Hom(CoherentSheaf,CoherentSheaf)
    -- global Hom

Ways to use sheafHom:
=====================

  * "sheafHom(CoherentSheaf,CoherentSheaf)"
  * "sheafHom(CoherentSheaf,SheafOfRings)"
  * "sheafHom(SheafOfRings,CoherentSheaf)"
  * "sheafHom(SheafOfRings,SheafOfRings)"
  * sheafHom(CoherentSheaf,SheafMap) (missing documentation)
  * sheafHom(SheafMap,CoherentSheaf) (missing documentation)
  * sheafHom(SheafMap,SheafMap) (missing documentation)
  * sheafHom(SheafMap,SheafOfRings) (missing documentation)
  * sheafHom(SheafOfRings,SheafMap) (missing documentation)

For the programmer
==================

The object sheafHom, is a method function with options (Macaulay2Doc).

sheafMap
********

Ways to use sheafMap:
=====================

  * sheafMap(Matrix) (missing documentation)
  * sheafMap(Matrix,ZZ) (missing documentation)

For the programmer
==================

The object sheafMap (missing documentation) is a method function (Macaulay2Doc).

SheafOfRings ^ List -- make a graded free coherent sheaf
********************************************************

Synopsis
========

  * Operator: ^ (Macaulay2Doc),
  * Usage:
        M = R^{i,j,k,...}
  * Inputs:
      * R
      * {i,j,k, ...}, a list (Macaulay2Doc), of integers or lists
        of integers
  * Outputs:
      * a coherent sheaf, , a graded free coherent sheaf
        whose generators have degrees -i, -j, -k, ...

Description
===========

+----------------------------------------+
|i1 : R = QQ[a..d]/(a*b*c*d)             |
|                                        |
|o1 = R                                  |
|                                        |
|o1 : QuotientRing                       |
+----------------------------------------+
|i2 : X = Proj R                         |
|                                        |
|o2 = X                                  |
|                                        |
|o2 : ProjectiveVariety                  |
+----------------------------------------+
|i3 : OO_X^{-1,-2,3}                     |
|                                        |
|        1           1           1       |
|o3 = OO  (-1) ++ OO  (-2) ++ OO  (3)    |
|       X           X           X        |
|                                        |
|o3 : coherent sheaf on X, free of rank 3|
+----------------------------------------+

If i, j, ... are lists of integers, then they represent multi-degrees, as in
graded and multigraded polynomial rings (Macaulay2Doc).
+--------------------------------------------------------+
|i4 : Y = Proj (QQ[x,y,z,Degrees=>{{1,0},{1,-1},{1,-2}}])|
|                                                        |
|o4 = Y                                                  |
|                                                        |
|o4 : ProjectiveVariety                                  |
+--------------------------------------------------------+
|i5 : OO_Y^{{1,2},{-1,3}}                                |
|                                                        |
|        1              1                                |
|o5 = OO   (1, 2) ++ OO   (-1, 3)                        |
|       Y              Y                                 |
|                                                        |
|o5 : coherent sheaf on Y, free of rank 2                |
+--------------------------------------------------------+
|i6 : degrees oo                                         |
|                                                        |
|o6 = {{-1, -2}, {1, -3}}                                |
|                                                        |
|o6 : List                                               |
+--------------------------------------------------------+

See also
========

  * OO -- the structure sheaf
  * Proj -- make a projective variety
  * degrees (Macaulay2Doc) -- degrees of generators
  * graded and multigraded polynomial rings (missing documentation)

Ways to use this method:
========================

  * SheafOfRings ^ List -- make a graded free
    coherent sheaf

Spec -- make an affine variety
******************************

Synopsis
========

  * Usage:
        Spec R
  * Inputs:
      * R
  * Outputs:
      * the affine variety (or scheme) formed from the ring R

Description
===========

+------------------+
|i1 : R = QQ[x,y]; |
+------------------+
|i2 : Spec R       |
|                  |
|o2 = Spec R       |
|                  |
|o2 : AffineVariety|
+------------------+

Ways to use Spec:
=================

  * "Spec(Ring)"

For the programmer
==================

The object Spec, is a method function (Macaulay2Doc).

tangentSheaf -- tangent sheaf of a projective variety
*****************************************************

See also
========

  * cotangentSheaf -- cotangent sheaf of a projective
    variety
  * sheaf -- make a coherent sheaf
  * ProjectiveVariety -- the class of all projective
    varieties

Ways to use tangentSheaf:
=========================

  * tangentSheaf(ProjectiveVariety),
    -- tangent sheaf of a projective variety

For the programmer
==================

The object tangentSheaf, is a method function with options (Macaulay2Doc).

tangentSheaf(ProjectiveVariety) -- tangent sheaf of a projective variety
************************************************************************

Synopsis
========

  * Function: tangentSheaf,
  * Usage:
        tangentSheaf X
  * Inputs:
      * X
  * Optional inputs (Macaulay2Doc),:
      * MinimalGenerators => a Boolean value (Macaulay2Doc),
        default value true, whether to apply minimalPresentation (Macaulay2Doc),
        to the result before returning it
      * Strategy (missing documentation) => ..., default value null,
  * Outputs:
      * a coherent sheaf,

Description
===========

Computes the tangent sheaf of the projective variety X

Tangent sheaf of the projective plane:
+---------------------------------------------+
|i1 : P = Proj(QQ[a,b,c])                     |
|                                             |
|o1 = P                                       |
|                                             |
|o1 : ProjectiveVariety                       |
+---------------------------------------------+
|i2 : TP = tangentSheaf(P)                    |
|                                             |
|o2 = image {-2} | a  b 0 |                   |
|           {-2} | -c 0 b |                   |
|           {-2} | 0  c a |                   |
|                                             |
|                                         3   |
|o2 : coherent sheaf on P, subsheaf of OO  (2)|
|                                        P    |
+---------------------------------------------+
|i3 : HH^0(TP(-1))                            |
|                                             |
|       3                                     |
|o3 = QQ                                      |
|                                             |
|o3 : QQ-module, free                         |
+---------------------------------------------+
|i4 : HH^1(TP(-3))                            |
|                                             |
|       1                                     |
|o4 = QQ                                      |
|                                             |
|o4 : QQ-module, free                         |
+---------------------------------------------+
Tangent sheaf of a plane nodal and cuspidal curve:
+-----------------------------------------------------------------------------+
|i5 : Node = Proj(QQ[a,b,c]/ideal(b^2*c-a^2*(a+c)))                           |
|                                                                             |
|o5 = Node                                                                    |
|                                                                             |
|o5 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i6 : Cusp = Proj(QQ[a,b,c]/ideal(b^2*c-a^3))                                 |
|                                                                             |
|o6 = Cusp                                                                    |
|                                                                             |
|o6 : ProjectiveVariety                                                       |
+-----------------------------------------------------------------------------+
|i7 : TNode = tangentSheaf(Node)                                              |
|                                                                             |
|o7 = image {0}  | 0  0       |                                               |
|           {-1} | 3b 3a2+3ac |                                               |
|           {-1} | 2a 2bc     |                                               |
|                                                                             |
|                                               1          2                  |
|o7 : coherent sheaf on Node, subsheaf of OO      ++ OO     (1)               |
|                                           Node       Node                   |
+-----------------------------------------------------------------------------+
|i8 : HH^0(TNode)                                                             |
|                                                                             |
|       1                                                                     |
|o8 = QQ                                                                      |
|                                                                             |
|o8 : QQ-module, free                                                         |
+-----------------------------------------------------------------------------+
|i9 : HH^1(TNode)                                                             |
|                                                                             |
|o9 = 0                                                                       |
|                                                                             |
|o9 : QQ-module                                                               |
+-----------------------------------------------------------------------------+
|i10 : TCusp = tangentSheaf(Cusp)                                             |
|                                                                             |
|o10 = image {1}  | 0   0   |                                                 |
|            {-1} | -2a -2b |                                                 |
|            {-2} | 3bc 3a2 |                                                 |
|                                                                             |
|                                                1              1             |
|o10 : coherent sheaf on Cusp, subsheaf of OO     (-1) ++ OO     (1) ++       |
|                                            Cusp           Cusp              |
|-----------------------------------------------------------------------------|
|      1                                                                      |
|OO     (2)                                                                   |
|  Cusp                                                                       |
+-----------------------------------------------------------------------------+
|i11 : HH^0(TCusp)                                                            |
|                                                                             |
|        2                                                                    |
|o11 = QQ                                                                     |
|                                                                             |
|o11 : QQ-module, free                                                        |
+-----------------------------------------------------------------------------+
|i12 : HH^1(TCusp)                                                            |
|                                                                             |
|o12 = 0                                                                      |
|                                                                             |
|o12 : QQ-module                                                              |
+-----------------------------------------------------------------------------+

See also
========

  * cotangentSheaf -- cotangent sheaf of a projective
    variety
  * sheaf -- make a coherent sheaf
  * ProjectiveVariety -- the class of all projective
    varieties

Ways to use this method:
========================

  * tangentSheaf(ProjectiveVariety),
    -- tangent sheaf of a projective variety

TorsionFree
***********

For the programmer
==================

The object TorsionFree (missing documentation) is a symbol (Macaulay2Doc).

varieties
*********

We may use Spec, to create an affine scheme (or algebraic variety)
with a specified coordinate ring and ring (Macaulay2Doc), to recover
the ring.
+--------------------+
|i1 : R = ZZ/2[x,y,z]|
|                    |
|o1 = R              |
|                    |
|o1 : PolynomialRing |
+--------------------+
|i2 : X = Spec R     |
|                    |
|o2 = X              |
|                    |
|o2 : AffineVariety  |
+--------------------+
|i3 : ring X         |
|                    |
|o3 = R              |
|                    |
|o3 : PolynomialRing |
+--------------------+
|i4 : dim X          |
|                    |
|o4 = 3              |
+--------------------+
The variety X is a 3-dimensional affine space.

We may form products.
+-------------------------------------+
|i5 : X ** X                          |
|                                     |
|          ZZ                         |
|o5 = Spec(--[x , y , z , x , y , z ])|
|           2  0   0   0   1   1   1  |
|                                     |
|o5 : AffineVariety                   |
+-------------------------------------+
|i6 : dim oo                          |
|                                     |
|o6 = 6                               |
+-------------------------------------+

We may use Proj, to create a projective scheme (or algebraic
variety) with a specified homogeneous coordinate ring.
+----------------------+
|i7 : Y = Proj R       |
|                      |
|o7 = Y                |
|                      |
|o7 : ProjectiveVariety|
+----------------------+
|i8 : ring Y           |
|                      |
|o8 = R                |
|                      |
|o8 : PolynomialRing   |
+----------------------+
|i9 : dim Y            |
|                      |
|o9 = 2                |
+----------------------+
The most important reason for introducing the notion of algebraic variety into
a computer algebra system is to support the notion of coherent sheaf.  See
coherent sheaves, for information about that.

For more details about varieties, see Variety.

variety -- get the variety
**************************

Ways to use variety:
====================

  * variety(CoherentSheaf) -- get the
    variety
  * variety(Ideal) -- the closed projective
    subvariety defined by an ideal
  * variety(Ring) -- the variety previously
    associated to a given ring
  * variety(SheafMap) (missing documentation)
  * variety(SheafOfRings) -- get the variety
  * variety(SumOfTwists) (missing documentation)

For the programmer
==================

The object variety, is a method function (Macaulay2Doc).

variety(CoherentSheaf) -- get the variety
*****************************************

Synopsis
========

  * Function: variety,

Description
===========

variety F -- produce the variety over which a coherent sheaf is defined.

+----------------------------------------+
|i1 : X = Proj(QQ[x,y,z])                |
|                                        |
|o1 = X                                  |
|                                        |
|o1 : ProjectiveVariety                  |
+----------------------------------------+
|i2 : OO_X(3)                            |
|                                        |
|        1                               |
|o2 = OO  (3)                            |
|       X                                |
|                                        |
|o2 : coherent sheaf on X, free of rank 1|
+----------------------------------------+
|i3 : variety oo                         |
|                                        |
|o3 = X                                  |
|                                        |
|o3 : ProjectiveVariety                  |
+----------------------------------------+

Ways to use this method:
========================

  * variety(CoherentSheaf) -- get the
    variety

variety(Ideal) -- the closed projective subvariety defined by an ideal
**********************************************************************

Synopsis
========

  * Function: variety,
  * Usage:
        variety I
  * Inputs:
      * I, a homogeneous ideal
  * Outputs:
      * the closed subvariety defined by an ideal

Description
===========

In the example, we compute the dimension of a line in the projective plane.
+----------------------+
|i1 : R = QQ[x..z]     |
|                      |
|o1 = R                |
|                      |
|o1 : PolynomialRing   |
+----------------------+
|i2 : variety ideal x  |
|                      |
|          R           |
|o2 = Proj(-)          |
|          x           |
|                      |
|o2 : ProjectiveVariety|
+----------------------+
|i3 : dim oo           |
|                      |
|o3 = 1                |
+----------------------+

Caveat
======

An alternative task for this function would be to define the affine subvariety,
so if something like this eventually becomes useful, we may have to redesign
it.  Suggestions welcome.

Ways to use this method:
========================

  * variety(Ideal) -- the closed projective
    subvariety defined by an ideal

variety(Ring) -- the variety previously associated to a given ring
******************************************************************

Synopsis
========

  * Function: variety,
  * Usage:
        variety S
  * Inputs:
      * S, a ring (Macaulay2Doc), the intersection ring of a
        variety $X$, say, or the homogeneous (Cox) ring of a normal toric
        variety, or another ring that has been associated to a variety, or an
        element in such a ring
  * Outputs:
      * a variety, $X$, the variety associated with S

Description
===========

+----------------------------------------+
|i1 : needsPackage "NormalToricVarieties"|
|                                        |
|o1 = NormalToricVarieties               |
|                                        |
|o1 : Package                            |
+----------------------------------------+
|i2 : X = toricProjectiveSpace 1         |
|                                        |
|o2 = X                                  |
|                                        |
|o2 : NormalToricVariety                 |
+----------------------------------------+
|i3 : S = ring X                         |
|                                        |
|o3 = S                                  |
|                                        |
|o3 : PolynomialRing                     |
+----------------------------------------+
|i4 : X === variety S                    |
|                                        |
|o4 = true                               |
+----------------------------------------+
+-----------------------------------------------+
|i5 : needsPackage "Schubert2"                  |
|                                               |
|o5 = Schubert2                                 |
|                                               |
|o5 : Package                                   |
+-----------------------------------------------+
|i6 : Y = abstractProjectiveSpace 1             |
|                                               |
|o6 = Y                                         |
|                                               |
|o6 : a flag bundle with subquotient ranks {2:1}|
+-----------------------------------------------+
|i7 : IY = intersectionRing Y                   |
|                                               |
|o7 = IY                                        |
|                                               |
|o7 : QuotientRing                              |
+-----------------------------------------------+
|i8 : Y === variety IY                          |
|                                               |
|o8 = true                                      |
+-----------------------------------------------+

For package developers: All this function does is to look up the symbol variety
in S. This is currently used in two packages, but can be used in other
settings, if desired.

Code
====

../../../../../Macaulay2/packages/Varieties.m2:208:17-208:95:
variety Ring  := S -> if S.?variety then S.variety else error
-------------------------------------------------------------------------------
--source code:
"no variety associated with ring"

See also
========

  * NormalToricVarieties -- working with
    normal toric varieties and related objects
  * Schubert2 -- computation in intersection theory

Ways to use this method:
========================

  * variety(Ring) -- the variety previously
    associated to a given ring

variety(SheafOfRings) -- get the variety
****************************************

Synopsis
========

  * Function: variety,
  * Usage:
        variety O
  * Inputs:
      * O
  * Outputs:
      * the variety over which O is a quasicoherent sheaf of rings

Description
===========

+-----------------------+
|i1 : X = Proj(QQ[x..z])|
|                       |
|o1 = X                 |
|                       |
|o1 : ProjectiveVariety |
+-----------------------+
|i2 : O = OO_X          |
|                       |
|o2 = OO                |
|       X               |
|                       |
|o2 : SheafOfRings      |
+-----------------------+
|i3 : variety O         |
|                       |
|o3 = X                 |
|                       |
|o3 : ProjectiveVariety |
+-----------------------+

Code
====

../../../../../Macaulay2/packages/Varieties.m2:311:25-311:39: --source code:
variety CoherentSheaf := F -> F.variety

Ways to use this method:
========================

  * variety(SheafOfRings) -- get the variety