This is SpecialFanoFourfolds.info, produced by Macaulay2, version 1.22

SpecialFanoFourfolds -- A package for working with Hodge-special fourfolds
**************************************************************************

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

This package contains several tools related to the rationality problem for
cubic fourfolds, Gushel-Mukai fourfolds, and some other special Fano fourfolds.
See arXiv:2204.11518 (see https://arxiv.org/abs/2204.11518 ) for some
applications.

The following are some papers that have benefited from this package.

References
==========

  * M. Hoff and G. Staglianò, Explicit constructions of K3 surfaces and
    unirational Noether-Lefschetz divisors, available at arXiv:2110.15819 (see
    https://arxiv.org/abs/2110.15819 ) (2021).
  * G. Staglianò, Some new rational Gushel fourfolds, available at
    arXiv:2003.07809 (see https://arxiv.org/abs/2003.07809 ) (2020).
  * G. Staglianò, On some families of Gushel-Mukai fourfolds, available at
    arXiv:2002.07026 (see https://arxiv.org/abs/2002.07026 ) (2020).
  * M. Hoff and G. Staglianò, New examples of rational Gushel-Mukai fourfolds,
    available at arXiv:1910.12838 (see https://arxiv.org/abs/1910.12838 )
    (2020).
  * F. Russo and G. Staglianò, Trisecant Flops, their associated K3 surfaces
    and the rationality of some Fano fourfolds, available at arXiv:1909.01263
    (see https://arxiv.org/abs/1909.01263 ) (2020).
  * F. Russo and G. Staglianò, Explicit rationality of some cubic fourfolds,
    available at arXiv:1811.03502 (see https://arxiv.org/abs/1811.03502 )
    (2019).
  * F. Russo and G. Staglianò, Congruences of 5-secant conics and the
    rationality of some admissible cubic fourfolds, available at
    arXiv:1707.00999 (see https://arxiv.org/abs/1707.00999 ) (2018).

Author
======

  * Giovanni Staglianò <giovanni.stagliano@unict.it>

Version
=======

This documentation describes version 2.7.1 of SpecialFanoFourfolds.

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

The source code from which this documentation is derived is in the file
SpecialFanoFourfolds.m2 (see common/share/Macaulay2/SpecialFanoFourfolds.m2 ).

Exports
=======

  * Types
      * CongruenceOfCurves -- the class of all
        congruences of secant curves to surfaces
      * HodgeSpecialFourfold -- the class of all
        Hodge-special fourfolds
      * IntersectionOfThreeQuadricsInP7,
        -- the class of all special intersection of three quadrics in P^7
      * SpecialCubicFourfold -- the class of all
        special cubic fourfolds
      * SpecialGushelMukaiFourfold -- the
        class of all special Gushel-Mukai fourfolds
  * Functions and commands
      * ambientFivefold -- get the ambient fivefold of
        the Hodge-special fourfold
      * associatedCastelnuovoSurface, --
        Castelnuovo surface associated to a rational complete intersection of
        three quadrics in P^7
      * associatedK3surface -- K3 surface
        associated to a rational fourfold
      * "building" -- see associatedK3surface, -- K3
        surface associated to a rational fourfold
      * beauvilleMap -- construction of Beauville for
        complete intersections of three quadrics in P^7
      * detectCongruence -- detect and return a
        congruence of secant curves to a surface
      * fanoFourfold -- random prime Fano fourfold of
        coindex at most 3
      * fromOrdinaryToGushel -- try to deform to a
        fourfold of Gushel type
      * GMtables -- make examples of reducible subschemes of
        P^5
      * isAdmissible -- whether an integer is admissible
        (in the sense of the theory of cubic fourfolds)
      * isAdmissibleGM -- whether an integer is
        admissible (in the sense of the theory of GM fourfolds)
      * mirrorFourfold -- associated fourfold to a
        rational cubic or GM fourfold
      * normalSheaf -- normal sheaf
      * parameterCount -- count of parameters
      * parametrizeFanoFourfold -- rational
        parametrization of a prime Fano fourfold of coindex at most 3
      * specialCubicFourfold -- make a special
        cubic fourfold
      * specialFourfold -- make a Hodge-special
        fourfold
      * specialGushelMukaiFourfold -- make a
        special Gushel-Mukai fourfold
      * surface -- get the special surface contained in the
        fourfold
      * toGrass -- Gushel morphism from a GM fourfold to
        GG(1,4)
      * trisecantFlop -- examples of trisecant flops
      * unirationalParametrization, --
        unirational parametrization
  * Methods
      * "ambientFivefold(HodgeSpecialFourfold)" -- see ambientFivefold,
        -- get the ambient fivefold of the Hodge-special
        fourfold
      * "associatedCastelnuovoSurface(IntersectionOfThreeQuadricsInP7)" -- see
        associatedCastelnuovoSurface, --
        Castelnuovo surface associated to a rational complete intersection of
        three quadrics in P^7
      * associatedK3surface(SpecialCubicFourfold)
        -- K3 surface associated
        to a rational cubic fourfold
      * associatedK3surface(SpecialGushelMukaiFourfold)
        -- K3 surface
        associated to a rational Gushel-Mukai fourfold
      * "beauvilleMap(IntersectionOfThreeQuadricsInP7)" -- see
        beauvilleMap, -- construction of Beauville for complete
        intersections of three quadrics in P^7
      * "check(CongruenceOfCurves)" -- see check(ZZ,CongruenceOfCurves),
        -- check that a congruence of
        curves is well-defined
      * check(ZZ,CongruenceOfCurves),
        -- check that a congruence of curves is well-defined
      * clean(HodgeSpecialFourfold), --
        clean the internal information of a fourfold
      * CongruenceOfCurves EmbeddedProjectiveVariety
        -- get the curve of a congruence passing
        through a point
      * "CongruenceOfCurves Ideal" -- see CongruenceOfCurves EmbeddedProjectiveVariety,
        -- get the curve of a congruence passing
        through a point
      * "detectCongruence(HodgeSpecialFourfold)" -- see detectCongruence,
        -- detect and return a congruence of secant curves to
        a surface
      * "detectCongruence(HodgeSpecialFourfold,ZZ)" -- see
        detectCongruence, -- detect and return a congruence
        of secant curves to a surface
      * "detectCongruence(SpecialCubicFourfold)" -- see
        detectCongruence(SpecialCubicFourfold,ZZ),
        -- detect and return a
        congruence of (3e-1)-secant curves of degree e
      * detectCongruence(SpecialCubicFourfold,ZZ)
        -- detect and return a
        congruence of (3e-1)-secant curves of degree e
      * "detectCongruence(SpecialGushelMukaiFourfold)" -- see
        detectCongruence(SpecialGushelMukaiFourfold,ZZ),
        -- detect and
        return a congruence of (2e-1)-secant curves of degree e inside a del
        Pezzo fivefold
      * detectCongruence(SpecialGushelMukaiFourfold,ZZ)
        -- detect and
        return a congruence of (2e-1)-secant curves of degree e inside a del
        Pezzo fivefold
      * "fanoFourfold(ZZ,ZZ)" -- see fanoFourfold, --
        random prime Fano fourfold of coindex at most 3
      * "fromOrdinaryToGushel(SpecialGushelMukaiFourfold)" -- see
        fromOrdinaryToGushel, -- try to deform to a
        fourfold of Gushel type
      * "GMtables(ZZ)" -- see GMtables, -- make examples of
        reducible subschemes of P^5
      * "GMtables(ZZ,Ring)" -- see GMtables, -- make examples
        of reducible subschemes of P^5
      * "isAdmissible(SpecialCubicFourfold)" -- see isAdmissible,
        -- whether an integer is admissible (in the sense of the
        theory of cubic fourfolds)
      * "isAdmissible(ZZ)" -- see isAdmissible, -- whether
        an integer is admissible (in the sense of the theory of cubic
        fourfolds)
      * "isAdmissibleGM(SpecialGushelMukaiFourfold)" -- see
        isAdmissibleGM, -- whether an integer is admissible (in
        the sense of the theory of GM fourfolds)
      * "isAdmissibleGM(ZZ)" -- see isAdmissibleGM, --
        whether an integer is admissible (in the sense of the theory of GM
        fourfolds)
      * isMember(EmbeddedProjectiveVariety,CongruenceOfCurves)
        -- test
        membership in a congruence of curves
      * map(CongruenceOfCurves) -- compute
        the parameter space of a congruence
      * map(SpecialCubicFourfold), --
        associated cubic map
      * map(SpecialGushelMukaiFourfold)
        -- associated quadratic map
      * "mirrorFourfold(HodgeSpecialFourfold)" -- see mirrorFourfold,
        -- associated fourfold to a rational cubic or GM
        fourfold
      * "mirrorFourfold(IntersectionOfThreeQuadricsInP7)" -- see
        mirrorFourfold, -- associated fourfold to a rational
        cubic or GM fourfold
      * "mirrorFourfold(SpecialCubicFourfold)" -- see mirrorFourfold,
        -- associated fourfold to a rational cubic or GM
        fourfold
      * "mirrorFourfold(SpecialGushelMukaiFourfold)" -- see
        mirrorFourfold, -- associated fourfold to a rational
        cubic or GM fourfold
      * "normalSheaf(EmbeddedProjectiveVariety)" -- see normalSheaf,
        -- normal sheaf
      * "normalSheaf(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)" --
        see normalSheaf, -- normal sheaf
      * "parameterCount(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"
        -- see parameterCount, -- count of parameters
      * "parameterCount(HodgeSpecialFourfold)" -- see parameterCount,
        -- count of parameters
      * parameterCount(SpecialCubicFourfold)
        -- count of parameters in the
        moduli space of GM fourfolds
      * parameterCount(SpecialGushelMukaiFourfold)
        -- count of parameters
        in the moduli space of GM fourfolds
      * parametrize(HodgeSpecialFourfold)
        -- rational parametrization
      * "parametrizeFanoFourfold(EmbeddedProjectiveVariety)" -- see
        parametrizeFanoFourfold, -- rational
        parametrization of a prime Fano fourfold of coindex at most 3
      * "specialCubicFourfold(EmbeddedProjectiveVariety,
        EmbeddedProjectiveVariety)" -- see specialCubicFourfold,
        -- make a special cubic fourfold
      * "specialCubicFourfold(Ideal,Ideal)" -- see specialCubicFourfold,
        -- make a special cubic fourfold
      * "specialCubicFourfold(Ideal,RingElement)" -- see
        specialCubicFourfold, -- make a special cubic
        fourfold
      * specialCubicFourfold(EmbeddedProjectiveVariety)
        -- random special
        cubic fourfold
      * "specialCubicFourfold(Ideal)" -- see
        specialCubicFourfold(EmbeddedProjectiveVariety),
        -- random special
        cubic fourfold
      * "specialCubicFourfold(String)" -- see
        specialCubicFourfold(String,Ring),
        -- random special cubic
        fourfold of a given type
      * specialCubicFourfold(String,Ring)
        -- random special cubic
        fourfold of a given type
      * "specialFourfold(EmbeddedProjectiveVariety)" -- see
        specialFourfold, -- make a Hodge-special fourfold
      * "specialFourfold(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"
        -- see specialFourfold, -- make a Hodge-special
        fourfold
      * "specialFourfold(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety,
        EmbeddedProjectiveVariety)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * "specialFourfold(Ideal)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * "specialFourfold(Ideal,Ideal)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * "specialFourfold(Ideal,RingElement)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * "specialFourfold(String)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * "specialFourfold(String,Ring)" -- see specialFourfold,
        -- make a Hodge-special fourfold
      * specialFourfold(String,ZZ), --
        load a prebuilt example of fourfold
      * "specialGushelMukaiFourfold(EmbeddedProjectiveVariety,
        EmbeddedProjectiveVariety)" -- see specialGushelMukaiFourfold,
        -- make a special Gushel-Mukai fourfold
      * "specialGushelMukaiFourfold(Ideal,Ideal)" -- see
        specialGushelMukaiFourfold, -- make a
        special Gushel-Mukai fourfold
      * "specialGushelMukaiFourfold(Array,Array)" -- see
        specialGushelMukaiFourfold(Array,Array,String,Thing),
        --
        construct GM fourfolds by gluing cubic or quartic scrolls to surfaces
        in PP^6
      * "specialGushelMukaiFourfold(Array,Array,String)" -- see
        specialGushelMukaiFourfold(Array,Array,String,Thing),
        --
        construct GM fourfolds by gluing cubic or quartic scrolls to surfaces
        in PP^6
      * specialGushelMukaiFourfold(Array,Array,String,Thing),
        --
        construct GM fourfolds by gluing cubic or quartic scrolls to surfaces
        in PP^6
      * "specialGushelMukaiFourfold(Array,Array,Thing)" -- see
        specialGushelMukaiFourfold(Array,Array,String,Thing),
        --
        construct GM fourfolds by gluing cubic or quartic scrolls to surfaces
        in PP^6
      * specialGushelMukaiFourfold(EmbeddedProjectiveVariety)
        -- random
        special Gushel-Mukai fourfold
      * "specialGushelMukaiFourfold(Ideal)" -- see
        specialGushelMukaiFourfold(EmbeddedProjectiveVariety),
        -- random
        special Gushel-Mukai fourfold
      * "specialGushelMukaiFourfold(String)" -- see
        specialGushelMukaiFourfold(String,Ring),
        -- random special
        Gushel-Mukai fourfold of a given type
      * specialGushelMukaiFourfold(String,Ring)
        -- random special
        Gushel-Mukai fourfold of a given type
      * "surface(HodgeSpecialFourfold)" -- see surface, -- get
        the special surface contained in the fourfold
      * surface(List) -- get a rational surface
      * "surface(VisibleList,Option)" -- see surface(List),
        -- get a rational surface
      * "surface(VisibleList,Option,Option)" -- see surface(List),
        -- get a rational surface
      * "surface(VisibleList,Ring)" -- see surface(List),
        -- get a rational surface
      * "surface(VisibleList,Ring,Option)" -- see surface(List),
        -- get a rational surface
      * "surface(VisibleList,Ring,Option,Option)" -- see surface(List),
        -- get a rational surface
      * surface(MultiprojectiveVariety,MultiprojectiveVariety)
        -- make a
        Hodge-special surface
      * toExternalString(HodgeSpecialFourfold)
        -- convert to a readable
        string
      * "toGrass(SpecialGushelMukaiFourfold)" -- see toGrass, --
        Gushel morphism from a GM fourfold to GG(1,4)
      * toGrass(EmbeddedProjectiveVariety)
        -- embedding of an ordinary
        Gushel-Mukai fourfold or a del Pezzo variety into GG(1,4)
      * "unirationalParametrization(HodgeSpecialFourfold)" -- see
        unirationalParametrization, -- unirational
        parametrization
      * "unirationalParametrization(SpecialCubicFourfold)" -- see
        unirationalParametrization, -- unirational
        parametrization
      * "unirationalParametrization(SpecialCubicFourfold,
        EmbeddedProjectiveVariety)" -- see unirationalParametrization,
        -- unirational parametrization
      * "unirationalParametrization(SpecialGushelMukaiFourfold)" -- see
        unirationalParametrization, -- unirational
        parametrization
  * Symbols
      * Singular -- whether to transfer computation to
        Singular

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

The object SpecialFanoFourfolds, is a package (Macaulay2Doc).

ambientFivefold -- get the ambient fivefold of the Hodge-special fourfold
*************************************************************************

Synopsis
========

  * Usage:
        ambientFivefold X
  * Inputs:
      * X, a Hodge-special fourfold,
  * Outputs:
      * an embedded projective variety (MultiprojectiveVarieties),
        the ambient
        fivefold of X

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

+-----------------------------------------------------------------------------+
|i1 : S = surface {4,5,1};                                                    |
|                                                                             |
|o1 : ProjectiveVariety, surface in PP^6                                      |
+-----------------------------------------------------------------------------+
|i2 : V = random(3,S);                                                        |
|                                                                             |
|o2 : ProjectiveVariety, hypersurface in PP^6                                 |
+-----------------------------------------------------------------------------+
|i3 : X = V * random(2,S);                                                    |
|                                                                             |
|o3 : ProjectiveVariety, 4-dimensional subvariety of PP^6                     |
+-----------------------------------------------------------------------------+
|i4 : F = specialFourfold(S,X,V);                                             |
|                                                                             |
|o4 : ProjectiveVariety, complete intersection of type (2,3) in PP^6          |
|-----------------------------------------------------------------------------|
|containing a surface of degree 7 and sectional genus 2                       |
+-----------------------------------------------------------------------------+
|i5 : ambientFivefold F                                                       |
|                                                                             |
|o5 = V                                                                       |
|                                                                             |
|o5 : ProjectiveVariety, hypersurface in PP^6                                 |
+-----------------------------------------------------------------------------+

When $X$ is a GM fourfold, the ambient
fivefold of $X$ is a fivefold $Y\subset\mathbb{P}^8$ of degree 5 such that
$X\subset Y$ is a quadric hypersurface. We have that the fourfold $X$ is of
ordinary type if and only if $Y$ is smooth.

+-----------------------------------------------------------------------------+
|i6 : X = specialFourfold("21",ZZ/33331);                                     |
|                                                                             |
|o6 : ProjectiveVariety, GM fourfold containing a surface of degree 12 and    |
|-----------------------------------------------------------------------------|
|sectional genus 5                                                            |
+-----------------------------------------------------------------------------+
|i7 : describe X                                                              |
|                                                                             |
|o7 = Special Gushel-Mukai fourfold of discriminant 26(')                     |
|     containing a surface in PP^8 of degree 12 and sectional genus 5         |
|     cut out by 16 hypersurfaces of degree 2                                 |
|     and with class in G(1,4) given by 7*s_(3,1)+5*s_(2,2)                   |
|     Type: ordinary                                                          |
|     (case 21 of Table 1 in arXiv:2002.07026)                                |
+-----------------------------------------------------------------------------+
|i8 : Y = ambientFivefold X;                                                  |
|                                                                             |
|o8 : ProjectiveVariety, 5-dimensional subvariety of PP^8                     |
+-----------------------------------------------------------------------------+
|i9 : isSubset(X,Y)                                                           |
|                                                                             |
|o9 = true                                                                    |
+-----------------------------------------------------------------------------+
|i10 : Y!                                                                     |
|dim:.................. 5                                                     |
|codim:................ 3                                                     |
|degree:............... 5                                                     |
|sectional genus:...... 1                                                     |
|generators:........... 2^5                                                   |
|linear normality:..... true                                                  |
|connected components:. 1                                                     |
|purity:............... true                                                  |
|dim sing. l.:......... -1                                                    |
+-----------------------------------------------------------------------------+

Ways to use ambientFivefold :
=============================

  * "ambientFivefold(HodgeSpecialFourfold)"

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

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

associatedCastelnuovoSurface -- Castelnuovo surface associated to a rational complete intersection of three quadrics in P^7
***************************************************************************************************************************

Synopsis
========

  * Usage:
        U' = associatedCastelnuovoSurface X
  * Inputs:
      * X, a complete intersection of three quadrics in PP^7,
        containing a surface $S\subset Y$
        that admits a congruence, of $(2e-1)$-secant
        curves of degree $e$ inside the ambient fivefold,
        $Y$ of the fourfold $X$
  * Optional inputs (Macaulay2Doc),:
      * Singular, => ..., default value null, whether to
        transfer computation to Singular
      * Strategy => ..., default value null
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * U', the (minimal) Castelnuovo surface associated to $X$
  * Consequences:
      * building U' will return the following four objects:
          * the dominant rational map (MultiprojectiveVarieties),
            $\mu:Y\dashrightarrow
            W$ defined by the linear system of hypersurfaces of degree $2e-1$
            having points of multiplicity $e$ along $S$;
          * the surface (MultiprojectiveVarieties),
            $U\subset W$ determining the inverse map
            of the restriction of $\mu$ to $X$;
          * the list (Macaulay2Doc), of the exceptional curves on
            the surface $U$;
          * a rational map (MultiprojectiveVarieties),
            of degree 1 from the surface $U$ to the minimal Castelnuovo surface
            $U'$.

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

More details will be provided in a forthcoming paper by F. Russo and G.
Staglianò.

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold random({5:{1}},0_(PP_(ZZ/33331)^7));                |
|                                                                             |
|o1 : ProjectiveVariety, complete intersection of three quadrics in PP^7      |
|-----------------------------------------------------------------------------|
|containing a surface of degree 1 and sectional genus 0                       |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Complete intersection of 3 quadrics in PP^7                             |
|     of discriminant 31 = det| 8 1 |                                         |
|                             | 1 4 |                                         |
|     containing a surface of degree 1 and sectional genus 0                  |
|     cut out by 5 hypersurfaces of degree 1                                  |
|     (This is a classical example of rational fourfold)                      |
+-----------------------------------------------------------------------------+
|i3 : time U' = associatedCastelnuovoSurface X;                               |
|     -- used 0.959293 seconds                                                |
|                                                                             |
|o3 : ProjectiveVariety, Castelnuovo surface associated to X                  |
+-----------------------------------------------------------------------------+
|i4 : (mu,U,C,f) = building U';                                               |
+-----------------------------------------------------------------------------+
|i5 : ? mu                                                                    |
|                                                                             |
|o5 = multi-rational map consisting of one single rational map                |
|     source variety: 5-dimensional subvariety of PP^7 cut out by 2           |
|     target variety: PP^4                                                    |
|     dominance: true                                                         |
|-----------------------------------------------------------------------------|
|hypersurfaces of degree 2                                                    |
+-----------------------------------------------------------------------------+

See also
========

  * associatedK3surface -- K3 surface associated to
    a rational fourfold
  * detectCongruence -- detect and return a congruence
    of secant curves to a surface

Ways to use associatedCastelnuovoSurface :
==========================================

  * "associatedCastelnuovoSurface(IntersectionOfThreeQuadricsInP7)"

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

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

associatedK3surface -- K3 surface associated to a rational fourfold
*******************************************************************

Synopsis
========

  * Optional inputs (Macaulay2Doc),:
      * Singular, => ..., default value null, whether to
        transfer computation to Singular
      * Strategy => ..., default value null
      * Verbose, => ..., default value false, request verbose
        feedback

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

See associatedK3surface(SpecialCubicFourfold),
and
associatedK3surface(SpecialGushelMukaiFourfold).

Ways to use associatedK3surface :
=================================

  * associatedK3surface(SpecialCubicFourfold)
    -- K3 surface associated to
    a rational cubic fourfold
  * associatedK3surface(SpecialGushelMukaiFourfold)
    -- K3 surface
    associated to a rational Gushel-Mukai fourfold

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

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

associatedK3surface(SpecialCubicFourfold) -- K3 surface associated to a rational cubic fourfold
***********************************************************************************************

Synopsis
========

  * Function: associatedK3surface,
  * Usage:
        U' = associatedK3surface X
  * Inputs:
      * X, a special cubic fourfold, containing a
        surface $S\subset\mathbb{P}^5$ that admits a congruence,
        of $(3e-1)$-secant curves of degree $e$
  * Optional inputs (Macaulay2Doc),:
      * Singular, => ..., default value null, whether to
        transfer computation to Singular
      * Strategy, => ..., default value null, K3
        surface associated to a rational fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * U', the (minimal) K3 surface associated to $X$
  * Consequences:
      * building U' will return the following four objects:
          * the dominant rational map (MultiprojectiveVarieties),
            $\mu:\mathbb{P}^5
            \dashrightarrow W$ defined by the linear system of hypersurfaces of
            degree $3e-1$ having points of multiplicity $e$ along $S$;
          * the surface (MultiprojectiveVarieties),
            $U\subset W$ determining the inverse map
            of the restriction of $\mu$ to $X$;
          * the list (Macaulay2Doc), of the exceptional curves on
            the surface $U$;
          * a rational map (MultiprojectiveVarieties),
            of degree 1 from the surface $U$ to the minimal K3 surface $U'$.

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

For more details and notation, see the papers Trisecant Flops, their associated
K3 surfaces and the rationality of some Fano fourfolds (see
https://arxiv.org/abs/1909.01263 ) and Explicit computations with cubic
fourfolds, Gushel-Mukai fourfolds, and their associated K3 surfaces (see
https://arxiv.org/abs/2204.11518 ).

+-----------------------------------------------------------------------------+
|i1 : X = specialCubicFourfold "quartic scroll";                              |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special cubic fourfold of discriminant 14                               |
|     containing a (smooth) surface of degree 4 and sectional genus 0         |
|     cut out by 6 hypersurfaces of degree 2                                  |
+-----------------------------------------------------------------------------+
|i3 : time U' = associatedK3surface X;                                        |
|     -- used 0.879992 seconds                                                |
|                                                                             |
|o3 : ProjectiveVariety, K3 surface associated to X                           |
+-----------------------------------------------------------------------------+
|i4 : (mu,U,C,f) = building U';                                               |
+-----------------------------------------------------------------------------+
|i5 : ? mu                                                                    |
|                                                                             |
|o5 = multi-rational map consisting of one single rational map                |
|     source variety: PP^5                                                    |
|     target variety: hypersurface in PP^5 defined by a form of degree 2      |
|     dominance: true                                                         |
+-----------------------------------------------------------------------------+
|i6 : ? U                                                                     |
|                                                                             |
|o6 = surface in PP^5 cut out by 7 hypersurfaces of degrees 2^1 3^6           |
+-----------------------------------------------------------------------------+
|i7 : last C                                                                  |
|                                                                             |
|o7 = curve in PP^5 cut out by 4 hypersurfaces of degrees 1^3 2^1             |
|                                                                             |
|o7 : ProjectiveVariety, curve in PP^5 (subvariety of codimension 1 in U)     |
+-----------------------------------------------------------------------------+
|i8 : assert(image f == U')                                                   |
+-----------------------------------------------------------------------------+

See also
========

  * associatedK3surface(SpecialGushelMukaiFourfold)
    -- K3 surface
    associated to a rational Gushel-Mukai fourfold
  * detectCongruence -- detect and return a congruence
    of secant curves to a surface
  * mirrorFourfold -- associated fourfold to a rational
    cubic or GM fourfold

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

  * associatedK3surface(SpecialCubicFourfold)
    -- K3 surface associated to
    a rational cubic fourfold

associatedK3surface(SpecialGushelMukaiFourfold) -- K3 surface associated to a rational Gushel-Mukai fourfold
************************************************************************************************************

Synopsis
========

  * Function: associatedK3surface,
  * Usage:
        U' = associatedK3surface X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
        containing a surface $S\subset Y$ that admits a congruence,
        of $(2e-1)$-secant curves of degree $e$ inside the
        ambient fivefold, $Y$ of the fourfold $X$
  * Optional inputs (Macaulay2Doc),:
      * Singular, => ..., default value null, whether to
        transfer computation to Singular
      * Strategy, => ..., default value null, K3
        surface associated to a rational fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * U', the (minimal) K3 surface associated to $X$
  * Consequences:
      * building U' will return the following four objects:
          * the dominant rational map (MultiprojectiveVarieties),
            $\mu:Y\dashrightarrow
            W$ defined by the linear system of hypersurfaces of degree $2e-1$
            having points of multiplicity $e$ along $S$;
          * the surface (MultiprojectiveVarieties),
            $U\subset W$ determining the inverse map
            of the restriction of $\mu$ to $X$;
          * the list (Macaulay2Doc), of the exceptional curves on
            the surface $U$;
          * a rational map (MultiprojectiveVarieties),
            of degree 1 from the surface $U$ to the minimal K3 surface $U'$.

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

For more details and notation, see the paper Explicit computations with cubic
fourfolds, Gushel-Mukai fourfolds, and their associated K3 surfaces (see
https://arxiv.org/abs/2204.11518 ).

+-----------------------------------------------------------------------------+
|i1 : X = specialGushelMukaiFourfold "tau-quadric";                           |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special Gushel-Mukai fourfold of discriminant 10(')                     |
|     containing a surface in PP^8 of degree 2 and sectional genus 0          |
|     cut out by 6 hypersurfaces of degrees (1,1,1,1,1,2)                     |
|     and with class in G(1,4) given by s_(3,1)+s_(2,2)                       |
|     Type: ordinary                                                          |
|     (case 1 of Table 1 in arXiv:2002.07026)                                 |
+-----------------------------------------------------------------------------+
|i3 : time U' = associatedK3surface X;                                        |
|     -- used 3.61154 seconds                                                 |
|                                                                             |
|o3 : ProjectiveVariety, K3 surface associated to X                           |
+-----------------------------------------------------------------------------+
|i4 : (mu,U,C,f) = building U';                                               |
+-----------------------------------------------------------------------------+
|i5 : ? mu                                                                    |
|                                                                             |
|o5 = multi-rational map consisting of one single rational map                |
|     source variety: 5-dimensional subvariety of PP^8 cut out by 5           |
|     target variety: PP^4                                                    |
|     dominance: true                                                         |
|-----------------------------------------------------------------------------|
|hypersurfaces of degree 2                                                    |
+-----------------------------------------------------------------------------+
|i6 : ? U                                                                     |
|                                                                             |
|o6 = surface in PP^4 cut out by 5 hypersurfaces of degrees 3^1 4^4           |
+-----------------------------------------------------------------------------+
|i7 : first C -- two disjoint lines                                           |
|                                                                             |
|o7 = curve in PP^4 cut out by 5 hypersurfaces of degrees 1^1 2^4             |
|                                                                             |
|o7 : ProjectiveVariety, curve in PP^4 (subvariety of codimension 1 in U)     |
+-----------------------------------------------------------------------------+
|i8 : assert(image f == U')                                                   |
+-----------------------------------------------------------------------------+

See also
========

  * associatedK3surface(SpecialCubicFourfold)
    -- K3 surface associated to
    a rational cubic fourfold
  * detectCongruence -- detect and return a congruence
    of secant curves to a surface
  * mirrorFourfold -- associated fourfold to a rational
    cubic or GM fourfold

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

  * associatedK3surface(SpecialGushelMukaiFourfold)
    -- K3 surface
    associated to a rational Gushel-Mukai fourfold

beauvilleMap -- construction of Beauville for complete intersections of three quadrics in P^7
*********************************************************************************************

Synopsis
========

  * Usage:
        f = beauvilleMap X
  * Inputs:
      * X, a complete intersection of three quadrics in PP^7,
  * Outputs:
      * f, a multi-rational map (MultiprojectiveVarieties),
        a birational map from $X$
        to a fourfold $Y\subset\mathbb{P}^2\times\mathbb{P}^5$ whose first
        projection $Y\to\mathbb{P}^2$ is a quadric surface bundle

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

Smooth intersections of three quadrics in $\mathbb{P}^7$ are birational to
quadric surface bundles over $\mathbb{P}^2$ with discriminant curve of degree
8. This is a construction of Beauville; see e.g. Proposition 6 in the paper
Intersections of three quadrics in P7 (see
https://www.intlpress.com/site/pub/files/_fulltext/journals/sdg/2017/0022/0001/
SDG-2017-0022-0001-a009.pdf ), by B. Hassett, A. Pirutka, and Y. Tschinkel.

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold random({5:{1}},0_(PP_(ZZ/33331)^7));                |
|                                                                             |
|o1 : ProjectiveVariety, complete intersection of three quadrics in PP^7      |
|-----------------------------------------------------------------------------|
|containing a surface of degree 1 and sectional genus 0                       |
+-----------------------------------------------------------------------------+
|i2 : f = beauvilleMap X;                                                     |
|                                                                             |
|o2 : MultirationalMap (birational map from X to 4-dimensional subvariety of  |
|-----------------------------------------------------------------------------|
|PP^2 x PP^5)                                                                 |
+-----------------------------------------------------------------------------+
|i3 : Y = target f;                                                           |
|                                                                             |
|o3 : ProjectiveVariety, 4-dimensional subvariety of PP^2 x PP^5              |
+-----------------------------------------------------------------------------+
|i4 : inverse f;                                                              |
|                                                                             |
|o4 : MultirationalMap (birational map from Y to X)                           |
+-----------------------------------------------------------------------------+
|i5 : first projectionMaps target f;                                          |
|                                                                             |
|o5 : QuadricFibration (dominant rational map from Y to PP^2)                 |
+-----------------------------------------------------------------------------+

Ways to use beauvilleMap :
==========================

  * "beauvilleMap(IntersectionOfThreeQuadricsInP7)"

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

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

check(ZZ,CongruenceOfCurves) -- check that a congruence of curves is well-defined
*********************************************************************************

Synopsis
========

  * Function: check (Macaulay2Doc),
  * Usage:
        check f
        check(n,f)
  * Inputs:
      * n, an integer (Macaulay2Doc), (optional with default value 5)
      * f, a congruence of curves,
  * Optional inputs (Macaulay2Doc),:
      * UserMode (Macaulay2Doc), => ..., default value null, null
      * Verbose (Macaulay2Doc), => ..., default value false, null
  * Outputs:
      * a congruence of curves, the same object
        passed as input, but an error is thrown if the congruence fails when
        evaluated, on n
        random points.

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

  * "check(CongruenceOfCurves)"
  * check(ZZ,CongruenceOfCurves), --
    check that a congruence of curves is well-defined

clean(HodgeSpecialFourfold) -- clean the internal information of a fourfold
***************************************************************************

Synopsis
========

  * Function: clean (Macaulay2Doc),
  * Usage:
        clean X
  * Inputs:
      * X, a Hodge-special fourfold,
  * Outputs:
      * a Hodge-special fourfold, which is
        mathematically identical to X, but new to the system

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

This function is only useful for testing.

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold "quartic scroll"                                    |
|                                                                             |
|o1 = X                                                                       |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : X' = clean X                                                            |
|                                                                             |
|o2 = X'                                                                      |
|                                                                             |
|o2 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i3 : X === X'                                                                |
|                                                                             |
|o3 = false                                                                   |
+-----------------------------------------------------------------------------+

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

  * clean(HodgeSpecialFourfold), --
    clean the internal information of a fourfold

CongruenceOfCurves -- the class of all congruences of secant curves to surfaces
*******************************************************************************

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

Objects of this type are created by detectCongruence.

Functions and methods returning a congruence of curves :
========================================================

  * detectCongruence -- detect and return a congruence
    of secant curves to a surface

Methods that use a congruence of curves :
=========================================

  * "check(CongruenceOfCurves)" -- see check(ZZ,CongruenceOfCurves),
    -- check that a congruence of curves is
    well-defined
  * check(ZZ,CongruenceOfCurves), --
    check that a congruence of curves is well-defined
  * CongruenceOfCurves EmbeddedProjectiveVariety
    -- get the curve of a congruence passing through
    a point
  * "CongruenceOfCurves Ideal" -- see CongruenceOfCurves EmbeddedProjectiveVariety,
    --
    get the curve of a congruence passing through a point
  * isMember(EmbeddedProjectiveVariety,CongruenceOfCurves)
    -- test
    membership in a congruence of curves
  * map(CongruenceOfCurves) -- compute the
    parameter space of a congruence

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

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

CongruenceOfCurves EmbeddedProjectiveVariety -- get the curve of a congruence passing through a point
*****************************************************************************************************

Synopsis
========

  * Operator: SPACE (Macaulay2Doc),
  * Usage:
        f(p)
  * Inputs:
      * f, a congruence of curves, a congruence of
        curves to a surface inside a variety $Y$
      * p, an embedded projective variety (MultiprojectiveVarieties),
        a general point
        on $Y$ (that is, a point on $Y$ outside a certain proper Zariski closed
        subset)
  * Outputs:
      * an embedded projective variety (MultiprojectiveVarieties),
        the unique curve
        of the congruence $f$ that passes through $p$

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

+-----------------------------------------------------------------------------+
|i1 : X = specialCubicFourfold surface {3,4};                                 |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 5 and  |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : f = detectCongruence(X,1);                                              |
|                                                                             |
|o2 : Congruence of 2-secant lines to surface in PP^5                         |
+-----------------------------------------------------------------------------+
|i3 : C = f point ambient X;                                                  |
|                                                                             |
|o3 : ProjectiveVariety, curve in PP^5                                        |
+-----------------------------------------------------------------------------+
|i4 : member(C,f)                                                             |
|                                                                             |
|o4 = true                                                                    |
+-----------------------------------------------------------------------------+
|i5 : assert oo                                                               |
+-----------------------------------------------------------------------------+

See also
========

  * detectCongruence -- detect and return a congruence
    of secant curves to a surface
  * isMember(EmbeddedProjectiveVariety,CongruenceOfCurves)
    -- test
    membership in a congruence of curves

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

  * CongruenceOfCurves EmbeddedProjectiveVariety
    -- get the curve of a congruence passing through
    a point
  * "CongruenceOfCurves Ideal"

detectCongruence -- detect and return a congruence of secant curves to a surface
********************************************************************************

Synopsis
========

  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback

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

See detectCongruence(SpecialCubicFourfold),
and
detectCongruence(SpecialGushelMukaiFourfold).

Ways to use detectCongruence :
==============================

  * "detectCongruence(HodgeSpecialFourfold)"
  * "detectCongruence(HodgeSpecialFourfold,ZZ)"
  * "detectCongruence(SpecialCubicFourfold)" -- see
    detectCongruence(SpecialCubicFourfold,ZZ),
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e
  * detectCongruence(SpecialCubicFourfold,ZZ)
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e
  * "detectCongruence(SpecialGushelMukaiFourfold)" -- see
    detectCongruence(SpecialGushelMukaiFourfold,ZZ),
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold
  * detectCongruence(SpecialGushelMukaiFourfold,ZZ)
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold

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

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

detectCongruence(SpecialCubicFourfold,ZZ) -- detect and return a congruence of (3e-1)-secant curves of degree e
***************************************************************************************************************

Synopsis
========

  * Function: detectCongruence,
  * Usage:
        detectCongruence X
        detectCongruence(X,e)
  * Inputs:
      * X, a special cubic fourfold, containing a
        surface $S\subset\mathbb{P}^5$
      * e, an integer (Macaulay2Doc), a positive integer (optional
        but recommended)
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a congruence of curves, that is a function
        which takes a general point $p\in\mathbb{P}^5$ (that is, outside a
        certain proper Zariski closed subset of $\mathbb{P}^5$) and returns the
        unique rational curve of degree $e$, $(3e-1)$-secant to $S$, and
        passing through $p$ (an error is thrown if such a curve does not exist
        or is not unique)

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

+-----------------------------------------------------------------------------+
|i1 : -- A general cubic fourfold of discriminant 26                          |
|     X = specialCubicFourfold("3-nodal septic scroll",ZZ/33331);             |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 7 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special cubic fourfold of discriminant 26                               |
|     containing a 3-nodal surface of degree 7 and sectional genus 0          |
|     cut out by 13 hypersurfaces of degree 3                                 |
+-----------------------------------------------------------------------------+
|i3 : time f = detectCongruence(X,Verbose=>true);                             |
|number lines contained in the image of the cubic map and passing through a   |
|number 2-secant lines = 7                                                    |
|number 5-secant conics = 1                                                   |
|     -- used 1.82 seconds                                                    |
|                                                                             |
|o3 : Congruence of 5-secant conics to surface in PP^5                        |
|-----------------------------------------------------------------------------|
|general point: 8                                                             |
+-----------------------------------------------------------------------------+
|i4 : p := point ambient X -- random point on P^5                             |
|                                                                             |
|o4 = point of coordinates [15092, -9738, -3620, -15181, 12688, 1]            |
|                                                                             |
|o4 : ProjectiveVariety, a point in PP^5                                      |
+-----------------------------------------------------------------------------+
|i5 : time C = f p; -- 5-secant conic to the surface                          |
|     -- used 0.222124 seconds                                                |
|                                                                             |
|o5 : ProjectiveVariety, curve in PP^5                                        |
+-----------------------------------------------------------------------------+
|i6 : assert(dim C == 1 and degree C == 2 and dim(C * surface X) == 0 and     |
|-----------------------------------------------------------------------------|
|degree(C * surface X) == 5 and isSubset(p, C))                               |
+-----------------------------------------------------------------------------+

See also
========

  * detectCongruence(SpecialGushelMukaiFourfold,ZZ)
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold
  * coneOfLines (MultiprojectiveVarieties) -- cone of lines
    on a subvariety passing through a point

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

  * "detectCongruence(SpecialCubicFourfold)"
  * detectCongruence(SpecialCubicFourfold,ZZ)
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e

detectCongruence(SpecialGushelMukaiFourfold,ZZ) -- detect and return a congruence of (2e-1)-secant curves of degree e inside a del Pezzo fivefold
*************************************************************************************************************************************************

Synopsis
========

  * Function: detectCongruence,
  * Usage:
        detectCongruence X
        detectCongruence(X,e)
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
        containing a surface $S\subset Y$, where $Y$ denotes the unique del
        Pezzo fivefold containing the fourfold $X$
      * e, an integer (Macaulay2Doc), a positive integer (optional
        but recommended)
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a congruence of curves, that is a function
        which takes a general point $p\in Y$(that is, a point on $Y$ outside a
        certain proper Zariski closed subset) and returns the unique rational
        curve of degree $e$, $(2e-1)$-secant to $S$, contained in $Y$ and
        passing through $p$ (an error is thrown if such a curve does not exist
        or is not unique)

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

+-----------------------------------------------------------------------------+
|i1 : -- A GM fourfold of discriminant 20                                     |
|     X = specialGushelMukaiFourfold("17",ZZ/33331);                          |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 9 and     |
|-----------------------------------------------------------------------------|
|sectional genus 2                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special Gushel-Mukai fourfold of discriminant 20                        |
|     containing a surface in PP^8 of degree 9 and sectional genus 2          |
|     cut out by 19 hypersurfaces of degree 2                                 |
|     and with class in G(1,4) given by 6*s_(3,1)+3*s_(2,2)                   |
|     Type: ordinary                                                          |
|     (case 17 of Table 1 in arXiv:2002.07026)                                |
+-----------------------------------------------------------------------------+
|i3 : time f = detectCongruence(X,Verbose=>true);                             |
|number lines contained in the image of the quadratic map and passing through |
|number 1-secant lines = 6                                                    |
|number 3-secant conics = 1                                                   |
|     -- used 5.72086 seconds                                                 |
|                                                                             |
|o3 : Congruence of 3-secant conics to surface in a fivefold in PP^8          |
|-----------------------------------------------------------------------------|
|a general point: 7                                                           |
+-----------------------------------------------------------------------------+
|i4 : Y = ambientFivefold X; -- del Pezzo fivefold containing X               |
|                                                                             |
|o4 : ProjectiveVariety, 5-dimensional subvariety of PP^8                     |
+-----------------------------------------------------------------------------+
|i5 : p := point Y -- random point on Y                                       |
|                                                                             |
|o5 = point of coordinates [7214, -1460, 7057, -2440, 15907, -14345, -5937,   |
|                                                                             |
|o5 : ProjectiveVariety, a point in PP^8                                      |
|-----------------------------------------------------------------------------|
|13402, 1]                                                                    |
+-----------------------------------------------------------------------------+
|i6 : time C = f p; -- 3-secant conic to the surface                          |
|     -- used 0.17269 seconds                                                 |
|                                                                             |
|o6 : ProjectiveVariety, curve in PP^8 (subvariety of codimension 4 in Y)     |
+-----------------------------------------------------------------------------+
|i7 : S = surface X;                                                          |
|                                                                             |
|o7 : ProjectiveVariety, surface in PP^8 (subvariety of codimension 3 in Y)   |
+-----------------------------------------------------------------------------+
|i8 : assert(dim C == 1 and degree C == 2 and dim(C*S) == 0 and degree(C*S) ==|
|-----------------------------------------------------------------------------|
|3 and isSubset(p,C) and isSubset(C,Y))                                       |
+-----------------------------------------------------------------------------+

See also
========

  * detectCongruence(SpecialCubicFourfold,ZZ)
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e
  * coneOfLines (MultiprojectiveVarieties) -- cone of lines
    on a subvariety passing through a point

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

  * "detectCongruence(SpecialGushelMukaiFourfold)"
  * detectCongruence(SpecialGushelMukaiFourfold,ZZ)
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold

discriminant(SpecialCubicFourfold) -- discriminant of a special cubic fourfold
******************************************************************************

Synopsis
========

  * Function: discriminant (Resultants),
  * Usage:
        discriminant X
  * Inputs:
      * X, a special cubic fourfold,
  * Optional inputs (Macaulay2Doc),:
      * Algorithm (Resultants),
        => ..., default value "Poisson", null
  * Outputs:
      * an integer (Macaulay2Doc), the discriminant of $X$

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

This calculation passes through the determination of the topological Euler
characteristic of the surface contained in the fourfold, which is obtained
thanks to the functions EulerCharacteristic (Cremona),
and Euler (CharacteristicClasses),
(the option Algorithm allows you to select the method).

+-----------------------------------------------------------------------------+
|i1 : X = specialCubicFourfold "quintic del Pezzo surface";                   |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 5 and  |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : time discriminant X                                                     |
|     -- used 0.0550088 seconds                                               |
|                                                                             |
|o2 = 14                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * discriminant(SpecialGushelMukaiFourfold)
    -- discriminant of a special
    Gushel-Mukai fourfold

discriminant(SpecialGushelMukaiFourfold) -- discriminant of a special Gushel-Mukai fourfold
*******************************************************************************************

Synopsis
========

  * Function: discriminant (Resultants),
  * Usage:
        discriminant X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
  * Optional inputs (Macaulay2Doc),:
      * Algorithm (Resultants),
        => ..., default value "Poisson", null
  * Outputs:
      * an integer (Macaulay2Doc), the discriminant of $X$

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

This function applies a formula given in Section 7 of the paper Special prime
Fano fourfolds of degree 10 and index 2 (see https://arxiv.org/abs/1302.1398 ),
obtaining the data required through the functions cycleClass (MultiprojectiveVarieties),
see EulerCharacteristic (Cremona),
and Euler (CharacteristicClasses),
(the option Algorithm allows you to select the method).

+-----------------------------------------------------------------------------+
|i1 : X = specialGushelMukaiFourfold "tau-quadric";                           |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : time discriminant X                                                     |
|     -- used 0.26395 seconds                                                 |
|                                                                             |
|o2 = 10                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * discriminant(SpecialCubicFourfold)
    -- discriminant of a special cubic
    fourfold

fanoFourfold -- random prime Fano fourfold of coindex at most 3
***************************************************************

Synopsis
========

  * Usage:
        fanoFourfold(d,g)
        fanoFourfold(d,g,CoefficientRing=>K)
  * Inputs:
      * (d,g) a pair of integers belonging to the set
        $\{(2,0),(3,1),(4,1),(5,1),(4,3),(6,4),(8,5),(10,6),(12,7),(14,8),(16,9
        ),(18,10)\}$
  * Optional inputs (Macaulay2Doc),:
      * CoefficientRing => ..., default value ZZ/65521
  * Outputs:
      * an embedded projective variety (MultiprojectiveVarieties),
        a random prime
        Fano fourfold of coindex at most 3 having degree $d$ and genus $g$

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

+-----------------------------------------------------------------------------+
|i1 : X = fanoFourfold(4,1);                                                  |
|                                                                             |
|o1 : ProjectiveVariety, 4-dimensional subvariety of PP^6                     |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = ambient:.............. PP^6                                             |
|     dim:.................. 4                                                |
|     codim:................ 2                                                |
|     degree:............... 4                                                |
|     generators:........... 2^2                                              |
|     purity:............... true                                             |
|     dim sing. l.:......... -1                                               |
+-----------------------------------------------------------------------------+
|i3 : parametrize X                                                           |
|                                                                             |
|o3 = multi-rational map consisting of one single rational map                |
|     source variety: PP^4                                                    |
|     target variety: 4-dimensional subvariety of PP^6 cut out by 2           |
|     dominance: true                                                         |
|     degree: 1                                                               |
|                                                                             |
|o3 : MultirationalMap (birational map from PP^4 to X)                        |
|-----------------------------------------------------------------------------|
|hypersurfaces of degree 2                                                    |
+-----------------------------------------------------------------------------+

See also
========

  * parametrizeFanoFourfold -- rational
    parametrization of a prime Fano fourfold of coindex at most 3

Ways to use fanoFourfold :
==========================

  * "fanoFourfold(ZZ,ZZ)"

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

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

fromOrdinaryToGushel -- try to deform to a fourfold of Gushel type
******************************************************************

Synopsis
========

  * Usage:
        fromOrdinaryToGushel X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
        a fourfold of ordinary type
  * Outputs:
      * a special Gushel-Mukai fourfold, a
        fourfold of Gushel type, a deformation of X

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

+-----------------------------------------------------------------------------+
|i1 : X = specialGushelMukaiFourfold "quintic del Pezzo surface";             |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 5 and     |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : singularLocus ambientFivefold X                                         |
|                                                                             |
|o2 = empty subscheme of PP^8                                                 |
|                                                                             |
|o2 : ProjectiveVariety, empty subscheme of PP^8                              |
+-----------------------------------------------------------------------------+
|i3 : X' = fromOrdinaryToGushel X;                                            |
|                                                                             |
|o3 : ProjectiveVariety, GM fourfold containing a surface of degree 5 and     |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i4 : support singularLocus ambientFivefold X'                                |
|                                                                             |
|o4 = point of coordinates [1, 0, 0, 0, 0, 0, 0, 0, 0]                        |
|                                                                             |
|o4 : ProjectiveVariety, a point in PP^8                                      |
+-----------------------------------------------------------------------------+

Ways to use fromOrdinaryToGushel :
==================================

  * "fromOrdinaryToGushel(SpecialGushelMukaiFourfold)"

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

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

GMtables -- make examples of reducible subschemes of P^5
********************************************************

Synopsis
========

  * Usage:
        GMtables(i,K)
  * Inputs:
      * i, an integer (Macaulay2Doc), an integer between 1 and 21
      * K, a ring (Macaulay2Doc), the coefficient ring
  * Optional inputs (Macaulay2Doc),:
      * Verify => ..., default value true
  * Outputs:
      * a triple of varieties (MultiprojectiveVarieties),
        $(B,V,C)$, which
        represents a reducible subscheme of $\mathbb{P}^5$, in accordance with
        the 21 examples listed in Table 2 of the paper On some families of
        Gushel-Mukai fourfolds (see https://arxiv.org/abs/2002.07026 ).

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

+-----------------------------------------------------------------------------+
|i1 : (B,V,C) := GMtables(1,ZZ/33331)                                         |
|                                                                             |
|o1 = (surface in PP^5 cut out by 4 hypersurfaces of degrees 1^1 2^3 , surface|
|     ------------------------------------------------------------------------|
|     in PP^5 cut out by 3 hypersurfaces of degrees 1^2 2^1 , curve in PP^5   |
|     ------------------------------------------------------------------------|
|     cut out by 4 hypersurfaces of degrees 1^3 2^1 )                         |
|                                                                             |
|o1 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i2 : B * V == C                                                              |
|                                                                             |
|o2 = true                                                                    |
+-----------------------------------------------------------------------------+

The corresponding example of fourfold reported in Table 1 of the aforementioned
paper can be obtained as follows.

+-----------------------------------------------------------------------------+
|i3 : psi = rationalMap(ideal B,Dominant=>2);                                 |
|                                                                             |
|o3 : RationalMap (quadratic rational map from PP^5 to 5-dimensional          |
|-----------------------------------------------------------------------------|
|subvariety of PP^8)                                                          |
+-----------------------------------------------------------------------------+
|i4 : X = specialGushelMukaiFourfold psi ideal V;                             |
|                                                                             |
|o4 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+

This is basically the same as doing this:

+-----------------------------------------------------------------------------+
|i5 : specialGushelMukaiFourfold("1",ZZ/33331);                               |
|                                                                             |
|o5 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+

See also
========

  * specialGushelMukaiFourfold(String,Ring)
    -- random special
    Gushel-Mukai fourfold of a given type
  * specialGushelMukaiFourfold(Array,Array),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6

Ways to use GMtables :
======================

  * "GMtables(ZZ)"
  * "GMtables(ZZ,Ring)"

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

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

HodgeSpecialFourfold -- the class of all Hodge-special fourfolds
****************************************************************

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

An object of the class HodgeSpecialFourfold, is
basically represented by a couple (S,X), where $X$ is a fourfold and $S$ is a
surface contained in $X$. Such objects are created by the function
specialFourfold.

See also
========

  * specialFourfold -- make a Hodge-special fourfold
  * SpecialCubicFourfold -- the class of all
    special cubic fourfolds
  * SpecialGushelMukaiFourfold -- the class
    of all special Gushel-Mukai fourfolds
  * IntersectionOfThreeQuadricsInP7, --
    the class of all special intersection of three quadrics in P^7

Types of Hodge-special fourfold :
=================================

  * IntersectionOfThreeQuadricsInP7, --
    the class of all special intersection of three quadrics in P^7
  * SpecialCubicFourfold -- the class of all
    special cubic fourfolds
  * SpecialGushelMukaiFourfold -- the class
    of all special Gushel-Mukai fourfolds

Functions and methods returning a Hodge-special fourfold :
==========================================================

  * mirrorFourfold -- associated fourfold to a rational
    cubic or GM fourfold
  * specialFourfold -- make a Hodge-special fourfold

Methods that use a Hodge-special fourfold :
===========================================

  * "ambientFivefold(HodgeSpecialFourfold)" -- see ambientFivefold,
    -- get the ambient fivefold of the Hodge-special fourfold
  * clean(HodgeSpecialFourfold), --
    clean the internal information of a fourfold
  * "detectCongruence(HodgeSpecialFourfold)" -- see detectCongruence,
    -- detect and return a congruence of secant curves to a
    surface
  * "detectCongruence(HodgeSpecialFourfold,ZZ)" -- see detectCongruence,
    -- detect and return a congruence of secant curves to a
    surface
  * "mirrorFourfold(HodgeSpecialFourfold)" -- see mirrorFourfold,
    -- associated fourfold to a rational cubic or GM fourfold
  * "parameterCount(HodgeSpecialFourfold)" -- see parameterCount,
    -- count of parameters
  * parametrize(HodgeSpecialFourfold)
    -- rational parametrization
  * "surface(HodgeSpecialFourfold)" -- see surface, -- get the
    special surface contained in the fourfold
  * toExternalString(HodgeSpecialFourfold)
    -- convert to a readable string
  * "unirationalParametrization(HodgeSpecialFourfold)" -- see
    unirationalParametrization, -- unirational
    parametrization

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

The object HodgeSpecialFourfold, is a type (Macaulay2Doc),
with ancestor classes EmbeddedProjectiveVariety (MultiprojectiveVarieties),
<
MultiprojectiveVariety (MultiprojectiveVarieties) <
MutableHashTable (Macaulay2Doc) < HashTable (Macaulay2Doc)
< Thing (Macaulay2Doc).

IntersectionOfThreeQuadricsInP7 -- the class of all special intersection of three quadrics in P^7
*************************************************************************************************

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

This is a subtype of the HodgeSpecialFourfold,
type.

See also
========

  * specialFourfold -- make a Hodge-special fourfold

Methods that use a complete intersection of three quadrics in PP^7 :
====================================================================

  * "associatedCastelnuovoSurface(IntersectionOfThreeQuadricsInP7)" -- see
    associatedCastelnuovoSurface, --
    Castelnuovo surface associated to a rational complete intersection of three
    quadrics in P^7
  * "beauvilleMap(IntersectionOfThreeQuadricsInP7)" -- see beauvilleMap,
    -- construction of Beauville for complete intersections of
    three quadrics in P^7
  * "mirrorFourfold(IntersectionOfThreeQuadricsInP7)" -- see
    mirrorFourfold, -- associated fourfold to a rational cubic
    or GM fourfold

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

The object IntersectionOfThreeQuadricsInP7,
is a type (Macaulay2Doc), with
ancestor classes HodgeSpecialFourfold, <
EmbeddedProjectiveVariety (MultiprojectiveVarieties)
< MultiprojectiveVariety (MultiprojectiveVarieties)
< MutableHashTable (Macaulay2Doc)
< HashTable (Macaulay2Doc) <
Thing (Macaulay2Doc).

isAdmissible -- whether an integer is admissible (in the sense of the theory of cubic fourfolds)
************************************************************************************************

Synopsis
========

  * Usage:
        isAdmissible d
  * Inputs:
      * d, an integer (Macaulay2Doc),
  * Outputs:
      * a Boolean value (Macaulay2Doc), whether d is admissible,
        i.e., it is an even integer d>6 which is not divisible by 4, 9 or any
        odd prime congruent to 2 modulo 3

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

+-------------------------------------------------------------+
|i1 : select(150,isAdmissible)                                |
|                                                             |
|o1 = {14, 26, 38, 42, 62, 74, 78, 86, 98, 114, 122, 134, 146}|
|                                                             |
|o1 : List                                                    |
+-------------------------------------------------------------+

See also
========

  * isAdmissibleGM -- whether an integer is admissible
    (in the sense of the theory of GM fourfolds)

Ways to use isAdmissible :
==========================

  * "isAdmissible(SpecialCubicFourfold)"
  * "isAdmissible(ZZ)"

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

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

isAdmissibleGM -- whether an integer is admissible (in the sense of the theory of GM fourfolds)
***********************************************************************************************

Synopsis
========

  * Usage:
        isAdmissibleGM d
  * Inputs:
      * d, an integer (Macaulay2Doc),
  * Outputs:
      * a Boolean value (Macaulay2Doc), whether $d$ is an
        integer $>$ 8 and $\equiv$ 2 or 4 (mod 8) such that the only odd primes
        that divide $d$ are $\equiv$ 1 (mod 4). In other words, whether a GM
        fourfold of discriminant d has an associated K3 surface.

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

+----------------------------------------------------------------------+
|i1 : select(140,isAdmissibleGM)                                       |
|                                                                      |
|o1 = {10, 20, 26, 34, 50, 52, 58, 68, 74, 82, 100, 106, 116, 122, 130}|
|                                                                      |
|o1 : List                                                             |
+----------------------------------------------------------------------+

See also
========

  * isAdmissible -- whether an integer is admissible (in
    the sense of the theory of cubic fourfolds)

Ways to use isAdmissibleGM :
============================

  * "isAdmissibleGM(SpecialGushelMukaiFourfold)"
  * "isAdmissibleGM(ZZ)"

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

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

isMember(EmbeddedProjectiveVariety,CongruenceOfCurves) -- test membership in a congruence of curves
***************************************************************************************************

Synopsis
========

  * Function: isMember (Macaulay2Doc),
  * Usage:
        member(C,f)
  * Inputs:
      * C, an embedded projective variety (MultiprojectiveVarieties),
        a curve
      * f, a congruence of curves,
  * Outputs:
      * a Boolean value (Macaulay2Doc), whether the curve $C$
        belongs to the congruence $f$

See also
========

  * CongruenceOfCurves EmbeddedProjectiveVariety
    -- get the curve of a congruence passing through
    a point

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

  * isMember(EmbeddedProjectiveVariety,CongruenceOfCurves)
    -- test
    membership in a congruence of curves

map(CongruenceOfCurves) -- compute the parameter space of a congruence
**********************************************************************

Synopsis
========

  * Function: map (Macaulay2Doc),
  * Usage:
        map f
  * Inputs:
      * f, a congruence of curves, a congruence of
        curves to a surface inside a variety $Y$
  * Optional inputs (Macaulay2Doc),:
      * Degree (Macaulay2Doc), => ..., default value null, null
      * DegreeLift (Macaulay2Doc), => ...,
        default value null, null
      * DegreeMap (Macaulay2Doc), => ...,
        default value null, null
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        a dominant map from $Y$ to
        the parameter space of $f$ whose general fibers are the curves of the
        congruence

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

+-----------------------------------------------------------------------------+
|i1 : S = PP_(ZZ/65521)[2,2];                                                 |
|                                                                             |
|o1 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i2 : Y = ambient S;                                                          |
|                                                                             |
|o2 : ProjectiveVariety, PP^5                                                 |
+-----------------------------------------------------------------------------+
|i3 : X = specialCubicFourfold S;                                             |
|                                                                             |
|o3 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i4 : f = detectCongruence(X,1);                                              |
|                                                                             |
|o4 : Congruence of 2-secant lines to S in Y                                  |
+-----------------------------------------------------------------------------+
|i5 : F = map f;                                                              |
|                                                                             |
|o5 : MultirationalMap (dominant rational map from Y to hypersurface in PP^5) |
+-----------------------------------------------------------------------------+
|i6 : Q = target F                                                            |
|                                                                             |
|o6 = Q                                                                       |
|                                                                             |
|o6 : ProjectiveVariety, hypersurface in PP^5                                 |
+-----------------------------------------------------------------------------+
|i7 : f;                                                                      |
|                                                                             |
|o7 : Congruence of 2-secant lines to S in Y; parameter space: Q              |
+-----------------------------------------------------------------------------+
|i8 : p = point Y;                                                            |
|                                                                             |
|o8 : ProjectiveVariety, a point in PP^5                                      |
+-----------------------------------------------------------------------------+
|i9 : assert(f p == F^* F p)                                                  |
+-----------------------------------------------------------------------------+

See also
========

  * detectCongruence -- detect and return a congruence
    of secant curves to a surface

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

  * map(CongruenceOfCurves) -- compute the
    parameter space of a congruence

map(SpecialCubicFourfold) -- associated cubic map
*************************************************

Synopsis
========

  * Function: map (Macaulay2Doc),
  * Usage:
        map X
  * Inputs:
      * X, a special cubic fourfold, containing a
        surface $S\subset\mathbb{P}^5$
  * Optional inputs (Macaulay2Doc),:
      * Degree (Macaulay2Doc), => ..., default value null, null
      * DegreeLift (Macaulay2Doc), => ...,
        default value null, null
      * DegreeMap (Macaulay2Doc), => ...,
        default value null, null
  * Outputs:
      * a rational map (Cremona), the rational map from
        $\mathbb{P}^5$ defined by the linear system of cubics through $S$

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

  * map(SpecialCubicFourfold), --
    associated cubic map

map(SpecialGushelMukaiFourfold) -- associated quadratic map
***********************************************************

Synopsis
========

  * Function: map (Macaulay2Doc),
  * Usage:
        map X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
        containing a surface $S\subset Y$, where $Y\subset\mathbb{P}^8$ is the
        unique del Pezzo fivefold containing $X$
  * Optional inputs (Macaulay2Doc),:
      * Degree (Macaulay2Doc), => ..., default value null, null
      * DegreeLift (Macaulay2Doc), => ...,
        default value null, null
      * DegreeMap (Macaulay2Doc), => ...,
        default value null, null
  * Outputs:
      * a rational map (Cremona), the rational map from $Y$
        defined by the linear system of quadrics through $S$

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

  * map(SpecialGushelMukaiFourfold),
    -- associated quadratic map

mirrorFourfold -- associated fourfold to a rational cubic or GM fourfold
************************************************************************

Synopsis
========

  * Usage:
        mirrorFourfold X
  * Inputs:
      * X, a special cubic fourfold, or a
        special Gushel-Mukai fourfold,
  * Optional inputs (Macaulay2Doc),:
      * Singular, => ..., default value null, whether to
        transfer computation to Singular
      * Strategy => ..., default value null
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a Hodge-special fourfold, the fourfold W
        containing the surface U, with the same notation as in the function
        associatedK3surface.

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

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold(PP_(ZZ/65521)[2,2]);                                |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : W = mirrorFourfold X;                                                   |
|                                                                             |
|o2 : ProjectiveVariety, fourfold in PP^5 containing a surface of degree 10   |
|-----------------------------------------------------------------------------|
|and sectional genus 7                                                        |
+-----------------------------------------------------------------------------+
|i3 : U = surface W;                                                          |
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^5 (subvariety of codimension 2 in      |
|-----------------------------------------------------------------------------|
|hypersurface in PP^5 defined by a form of degree 2)                          |
+-----------------------------------------------------------------------------+
|i4 : mirrorFourfold W                                                        |
|                                                                             |
|o4 = X                                                                       |
|                                                                             |
|o4 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i5 : (building associatedK3surface X)_1                                      |
|                                                                             |
|o5 = U                                                                       |
|                                                                             |
|o5 : ProjectiveVariety, surface in PP^5 (subvariety of codimension 2 in      |
|-----------------------------------------------------------------------------|
|hypersurface in PP^5 defined by a form of degree 2)                          |
+-----------------------------------------------------------------------------+
|i6 : assert(oo === U)                                                        |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i7 : X' = specialFourfold "tau-quadric";                                     |
|                                                                             |
|o7 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i8 : W' = mirrorFourfold X';                                                 |
|                                                                             |
|o8 : ProjectiveVariety, a PP^4 containing a surface of degree 8 and sectional|
|-----------------------------------------------------------------------------|
|genus 6                                                                      |
+-----------------------------------------------------------------------------+
|i9 : U' = surface W';                                                        |
|                                                                             |
|o9 : ProjectiveVariety, surface in PP^4                                      |
+-----------------------------------------------------------------------------+
|i10 : mirrorFourfold W'                                                      |
|                                                                             |
|o10 = X'                                                                     |
|                                                                             |
|o10 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and    |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i11 : (building associatedK3surface X')_1                                    |
|                                                                             |
|o11 = U'                                                                     |
|                                                                             |
|o11 : ProjectiveVariety, surface in PP^4                                     |
+-----------------------------------------------------------------------------+
|i12 : assert(oo === U')                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * associatedK3surface -- K3 surface associated to
    a rational fourfold

Ways to use mirrorFourfold :
============================

  * "mirrorFourfold(HodgeSpecialFourfold)"
  * "mirrorFourfold(IntersectionOfThreeQuadricsInP7)"
  * "mirrorFourfold(SpecialCubicFourfold)"
  * "mirrorFourfold(SpecialGushelMukaiFourfold)"

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

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

normalSheaf -- normal sheaf
***************************

Synopsis
========

  * Usage:
        normalSheaf X
        normalSheaf(X % Y)
        normalSheaf(X,Y)
  * Inputs:
      * X, an embedded projective variety (MultiprojectiveVarieties),
      * Y, an embedded projective variety (MultiprojectiveVarieties),
        such that
        $X\subset Y$ (if not given, it is taken to be the ambient variety (MultiprojectiveVarieties),
        of $X$)
  * Outputs:
      * a coherent sheaf (Macaulay2Doc), the normal sheaf
        $\mathcal{N}_{X, Y}$ of $X$ in $Y$

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

+--------------------------------------------+
|i1 : X = PP_(ZZ/65521)^(2,2);               |
|                                            |
|o1 : ProjectiveVariety, surface in PP^5     |
+--------------------------------------------+
|i2 : Y = random(2,X);                       |
|                                            |
|o2 : ProjectiveVariety, hypersurface in PP^5|
+--------------------------------------------+
|i3 : N = normalSheaf X;                     |
|                                            |
|o3 : Coherent sheaf on X                    |
+--------------------------------------------+
|i4 : N' = normalSheaf(X,Y);                 |
|                                            |
|o4 : Coherent sheaf on X                    |
+--------------------------------------------+
|i5 : rank HH^0 N                            |
|                                            |
|o5 = 27                                     |
+--------------------------------------------+
|i6 : rank HH^0 N'                           |
|                                            |
|o6 = 12                                     |
+--------------------------------------------+

Ways to use normalSheaf :
=========================

  * "normalSheaf(EmbeddedProjectiveVariety)"
  * "normalSheaf(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"

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

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

parameterCount -- count of parameters
*************************************

Synopsis
========

  * Usage:
        parameterCount(S,X)
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
      * X, an embedded projective variety (MultiprojectiveVarieties),
        such that
        $S\subseteq X$
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a count of parameters to estimate the dimensions of the corresponding
        Hilbert schemes

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

See parameterCount(SpecialCubicFourfold),
and
parameterCount(SpecialGushelMukaiFourfold),
for more precise applications
of this function.

The following calculation shows that the family of complete intersections of 3
quadrics in $\mathbb{P}^5$ containing a rational normal quintic curve has
codimension 1 in the space of all such complete intersections.

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/33331; S = PP_K^(1,5);                                           |
|                                                                             |
|o2 : ProjectiveVariety, curve in PP^5                                        |
+-----------------------------------------------------------------------------+
|i3 : X = random({{2},{2},{2}},S);                                            |
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i4 : time parameterCount(S,X,Verbose=>true)                                  |
|S: rational normal curve of degree 5 in PP^5                                 |
|X: smooth surface of degree 8 and sectional genus 5 in PP^5 cut              |
|(assumption: h^1(N_{S,P^5}) = 0)                                             |
|h^0(N_{S,P^5}) = 32                                                          |
|h^1(O_S(2)) = 0, and h^0(I_{S,P^5}(2)) = 10 = h^0(O_(P^5)(2)) -              |
|in particular, h^0(I_{S,P^5}(2)) is minimal                                  |
|dim GG(2,9) = 21                                                             |
|h^0(N_{S,P^5}) + dim GG(2,9) = 53                                            |
|h^0(N_{S,X}) = 0                                                             |
|dim{[X] : S ⊂ X} >= 53                                                       |
|dim GG(2,P(H^0(O_(P^5)(2)))) = 54                                            |
|codim{[X] : S ⊂ X} <= 1                                                      |
|     -- used 0.217784 seconds                                                |
|                                                                             |
|o4 = (1, (10, 32, 0))                                                        |
|                                                                             |
|o4 : Sequence                                                                |
|-----------------------------------------------------------------------------|
|out by 3 hypersurfaces of degree 2                                           |
|                                                                             |
|                                                                             |
|\chi(O_S(2));                                                                |
+-----------------------------------------------------------------------------+

See also
========

  * parameterCount(SpecialCubicFourfold)
    -- count of parameters in the
    moduli space of GM fourfolds
  * parameterCount(SpecialGushelMukaiFourfold)
    -- count of parameters in
    the moduli space of GM fourfolds
  * normalSheaf -- normal sheaf

Ways to use parameterCount :
============================

  * "parameterCount(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"
  * "parameterCount(HodgeSpecialFourfold)"
  * parameterCount(SpecialCubicFourfold)
    -- count of parameters in the
    moduli space of GM fourfolds
  * parameterCount(SpecialGushelMukaiFourfold)
    -- count of parameters in
    the moduli space of GM fourfolds

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

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

parameterCount(SpecialCubicFourfold) -- count of parameters in the moduli space of GM fourfolds
***********************************************************************************************

Synopsis
========

  * Function: parameterCount,
  * Usage:
        parameterCount X
  * Inputs:
      * X, a special cubic fourfold, a special
        cubic fourfold containing a surface $S$
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * an integer (Macaulay2Doc), an upper bound for the codimension
        in the moduli space of cubic fourfolds of the locus of cubic fourfolds
        that contain a surface belonging to the same irreducible component of
        the Hilbert scheme containing $[S]$
      * a sequence (Macaulay2Doc), the triple of integers:
        $(h^0(I_{S/P^5}(3)), h^0(N_{S/P^5}), h^0(N_{S/X}))$

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

This function implements a parameter count explained in the paper
Unirationality of moduli spaces of special cubic fourfolds and K3 surfaces (see
https://arxiv.org/abs/1503.05256 ), by H. Nuer.

Below, we show that the closure of the locus of cubic fourfolds containing a
Veronese surface has codimension at most one (hence exactly one) in the moduli
space of cubic fourfolds. Then, by the computation of the discriminant, we
deduce that the cubic fourfolds containing a Veronese surface describe the
Hassett's divisor $\mathcal{C}_{20}$

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/33331; V = PP_K^(2,2);                                           |
|                                                                             |
|o2 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i3 : X = specialCubicFourfold V;                                             |
|                                                                             |
|o3 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i4 : time parameterCount(X,Verbose=>true)                                    |
|S: Veronese surface in PP^5                                                  |
|X: smooth cubic hypersurface in PP^5                                         |
|(assumption: h^1(N_{S,P^5}) = 0)                                             |
|h^0(N_{S,P^5}) = 27                                                          |
|h^1(O_S(3)) = 0, and h^0(I_{S,P^5}(3)) = 28 = h^0(O_(P^5)(3)) - \chi(O_S(3));|
|in particular, h^0(I_{S,P^5}(3)) is minimal                                  |
|h^0(N_{S,P^5}) + 27 = 54                                                     |
|h^0(N_{S,X}) = 0                                                             |
|dim{[X] : S ⊂ X} >= 54                                                       |
|dim P(H^0(O_(P^5)(3))) = 55                                                  |
|codim{[X] : S ⊂ X} <= 1                                                      |
|     -- used 0.295891 seconds                                                |
|                                                                             |
|o4 = (1, (28, 27, 0))                                                        |
|                                                                             |
|o4 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i5 : discriminant X                                                          |
|                                                                             |
|o5 = 20                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * parameterCount(SpecialGushelMukaiFourfold)
    -- count of parameters in
    the moduli space of GM fourfolds
  * normalSheaf -- normal sheaf

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

  * parameterCount(SpecialCubicFourfold)
    -- count of parameters in the
    moduli space of GM fourfolds

parameterCount(SpecialGushelMukaiFourfold) -- count of parameters in the moduli space of GM fourfolds
*****************************************************************************************************

Synopsis
========

  * Function: parameterCount,
  * Usage:
        parameterCount X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
        a special GM fourfold containing a surface $S$ and contained in a del
        Pezzo fivefold $Y$
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * an integer (Macaulay2Doc), an upper bound for the codimension
        in the moduli space of GM fourfolds of the locus of GM fourfolds that
        contain a surface belonging to the same irreducible component of the
        Hilbert scheme of $Y$ that contains $[S]$
      * a sequence (Macaulay2Doc), the triple of integers:
        $(h^0(I_{S/Y}(2)), h^0(N_{S/Y}), h^0(N_{S/X}))$

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

This function implements a parameter count explained in the paper On some
families of Gushel-Mukai fourfolds (see https://arxiv.org/abs/2002.07026 ).

Below, we show that the closure of the locus of GM fourfolds containing a cubic
scroll has codimension at most one (hence exactly one) in the moduli space of
GM fourfolds.

+-----------------------------------------------------------------------------+
|i1 : G = GG(ZZ/33331,1,4);                                                   |
|                                                                             |
|o1 : ProjectiveVariety, GG(1,4)                                              |
+-----------------------------------------------------------------------------+
|i2 : S = (schubertCycle({2,0},G) * random({{1},{1}},0_G))%G                  |
|                                                                             |
|o2 = S                                                                       |
|                                                                             |
|o2 : ProjectiveVariety, surface in PP^9 (subvariety of codimension 4 in G)   |
+-----------------------------------------------------------------------------+
|i3 : X = specialGushelMukaiFourfold S;                                       |
|                                                                             |
|o3 : ProjectiveVariety, GM fourfold containing a surface of degree 3 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i4 : time parameterCount(X,Verbose=>true)                                    |
|S: cubic surface in PP^8 cut out by 7 hypersurfaces of degrees (1,1,1,1,2,2,2|
|X: GM fourfold containing S                                                  |
|Y: del Pezzo fivefold containing X                                           |
|h^1(N_{S,Y}) = 0                                                             |
|h^0(N_{S,Y}) = 11                                                            |
|h^1(O_S(2)) = 0, and h^0(I_{S,Y}(2)) = 28 = h^0(O_Y(2)) - \chi(O_S(2));      |
|in particular, h^0(I_{S,Y}(2)) is minimal                                    |
|h^0(N_{S,Y}) + 27 = 38                                                       |
|h^0(N_{S,X}) = 0                                                             |
|dim{[X] : S ⊂ X ⊂ Y} >= 38                                                   |
|dim P(H^0(O_Y(2))) = 39                                                      |
|codim{[X] : S ⊂ X ⊂ Y} <= 1                                                  |
|     -- used 1.59517 seconds                                                 |
|                                                                             |
|o4 = (1, (28, 11, 0))                                                        |
|                                                                             |
|o4 : Sequence                                                                |
|-----------------------------------------------------------------------------|
|)                                                                            |
+-----------------------------------------------------------------------------+
|i5 : discriminant X                                                          |
|                                                                             |
|o5 = 12                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * parameterCount(SpecialCubicFourfold)
    -- count of parameters in the
    moduli space of GM fourfolds
  * normalSheaf -- normal sheaf

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

  * parameterCount(SpecialGushelMukaiFourfold)
    -- count of parameters in
    the moduli space of GM fourfolds

parametrize(HodgeSpecialFourfold) -- rational parametrization
*************************************************************

Synopsis
========

  * Function: parametrize (Cremona),
  * Usage:
        parametrize X
  * Inputs:
      * X, a Hodge-special fourfold,
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        a birational map from a
        rational fourfold to X

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

Some Hodge-special fourfolds are known to be rational. In this case, the
function tries to obtain a birational map from $\mathbb{P}^4$ (or, e.g., from a
quadric hypersurface in $\mathbb{P}^5$) to the fourfold.

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold surface {3,4};                                      |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 5 and  |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : phi = parametrize X;                                                    |
|                                                                             |
|o2 : MultirationalMap (birational map from PP^4 to X)                        |
+-----------------------------------------------------------------------------+
|i3 : describe phi                                                            |
|                                                                             |
|o3 = multi-rational map consisting of one single rational map                |
|     source variety: PP^4                                                    |
|     target variety: hypersurface in PP^5 defined by a form of degree 3      |
|     base locus: surface in PP^4 cut out by 6 hypersurfaces of degree 4      |
|     dominance: true                                                         |
|     multidegree: {1, 4, 7, 6, 3}                                            |
|     degree: 1                                                               |
|     degree sequence (map 1/1): [4]                                          |
|     coefficient ring: ZZ/65521                                              |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i4 : Y = specialFourfold "tau-quadric";                                      |
|                                                                             |
|o4 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i5 : psi = parametrize Y;                                                    |
|                                                                             |
|o5 : MultirationalMap (birational map from PP^4 to Y)                        |
+-----------------------------------------------------------------------------+
|i6 : describe psi                                                            |
|                                                                             |
|o6 = multi-rational map consisting of one single rational map                |
|     source variety: PP^4                                                    |
|     target variety: 4-dimensional subvariety of PP^8 cut out                |
|     base locus: surface in PP^4 cut out by 5 hypersurfaces of               |
|     dominance: true                                                         |
|     multidegree: {1, 4, 8, 10, 10}                                          |
|     degree: 1                                                               |
|     degree sequence (map 1/1): [4]                                          |
|     coefficient ring: ZZ/65521                                              |
|-----------------------------------------------------------------------------|
|by 6 hypersurfaces of degree 2                                               |
| degrees 3^1 4^4                                                             |
+-----------------------------------------------------------------------------+
+-----------------------------------------------------------------------------+
|i7 : Z = specialFourfold "plane in PP^7";                                    |
|                                                                             |
|o7 : ProjectiveVariety, complete intersection of three quadrics in PP^7      |
|-----------------------------------------------------------------------------|
|containing a surface of degree 1 and sectional genus 0                       |
+-----------------------------------------------------------------------------+
|i8 : eta = parametrize Z;                                                    |
|                                                                             |
|o8 : MultirationalMap (birational map from PP^4 to Z)                        |
+-----------------------------------------------------------------------------+
|i9 : describe eta                                                            |
|                                                                             |
|o9 = multi-rational map consisting of one single rational map                |
|     source variety: PP^4                                                    |
|     target variety: 4-dimensional subvariety of PP^7 cut out                |
|     base locus: surface in PP^4 cut out by 4 hypersurfaces of               |
|     dominance: true                                                         |
|     multidegree: {1, 4, 7, 8, 8}                                            |
|     degree: 1                                                               |
|     degree sequence (map 1/1): [4]                                          |
|     coefficient ring: ZZ/65521                                              |
|-----------------------------------------------------------------------------|
|by 3 hypersurfaces of degree 2                                               |
| degrees 3^1 4^3                                                             |
+-----------------------------------------------------------------------------+

See also
========

  * unirationalParametrization, --
    unirational parametrization
  * parametrize(MultiprojectiveVariety) (MultiprojectiveVarieties)
    -- try
    to get a parametrization of a multi-projective variety

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

  * parametrize(HodgeSpecialFourfold)
    -- rational parametrization

parametrizeFanoFourfold -- rational parametrization of a prime Fano fourfold of coindex at most 3
*************************************************************************************************

Synopsis
========

  * Usage:
        parametrize X
        parametrizeFanoFourfold(X,Strategy=>...)
  * Inputs:
      * X, an embedded projective variety (MultiprojectiveVarieties),
        a prime Fano
        fourfold $X$ of coindex at most 3 having degree $d$ and genus $g$ with
        $(d,g)\in\{(2,0),(4,1),(5,1),(12,7),(14,8),(16,9),(18,10)\}$
  * Optional inputs (Macaulay2Doc),:
      * Strategy => ..., default value 1
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        a birational map from
        $\mathbb{P}^4$ to $X$

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

This function is mainly based on results contained in the classical paper
Algebraic varieties with canonical curve sections (see
https://link.springer.com/article/10.1007/BF02413916 ), by L. Roth. In some
examples, more strategies are available. For instance, if
$X\subset\mathbb{P}^7$ is a 4-dimensional linear section of
$\mathbb{G}(1,4)\subset\mathbb{P}^9$, then by passing Strategy=>1 (which is the
default choice) we get the inverse of the projection from the plane spanned by
a conic contained in $X$; while with Strategy=>2 we get the projection from the
unique $\sigma_{2,2}$-plane contained in $X$ (Todd's result).

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/65521; X = GG_K(1,4) * random({{1},{1}},0_(GG_K(1,4)));          |
|                                                                             |
|o2 : ProjectiveVariety, 4-dimensional subvariety of PP^9                     |
+-----------------------------------------------------------------------------+
|i3 : ? X                                                                     |
|                                                                             |
|o3 = 4-dimensional subvariety of PP^9 cut out by 7 hypersurfaces of degrees  |
|     1^2 2^5                                                                 |
+-----------------------------------------------------------------------------+
|i4 : time parametrizeFanoFourfold X                                          |
|     -- used 0.468651 seconds                                                |
|                                                                             |
|o4 = multi-rational map consisting of one single rational map                |
|     source variety: PP^4                                                    |
|     target variety: 4-dimensional subvariety of PP^9 cut out by 7           |
|     dominance: true                                                         |
|     degree: 1                                                               |
|                                                                             |
|o4 : MultirationalMap (birational map from PP^4 to X)                        |
|-----------------------------------------------------------------------------|
|hypersurfaces of degrees 1^2 2^5                                             |
+-----------------------------------------------------------------------------+

See also
========

  * fanoFourfold -- random prime Fano fourfold of coindex
    at most 3
  * parametrize(HodgeSpecialFourfold)
    -- rational parametrization
  * unirationalParametrization, --
    unirational parametrization
  * parametrize(MultiprojectiveVariety) (MultiprojectiveVarieties)
    -- try
    to get a parametrization of a multi-projective variety

Ways to use parametrizeFanoFourfold :
=====================================

  * "parametrizeFanoFourfold(EmbeddedProjectiveVariety)"

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

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

Singular -- whether to transfer computation to Singular
*******************************************************

Synopsis
========

  * Usage:
        Singular => true or false

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

This option allows you to transfer part of the computation to Singular.

See also
========

  * associatedK3surface -- K3 surface associated to
    a rational fourfold

Functions with optional argument named Singular :
=================================================

  * "associatedCastelnuovoSurface(...,Singular=>...)"
  * "associatedK3surface(...,Singular=>...)"
  * "mirrorFourfold(...,Singular=>...)"

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

The object Singular, is a symbol (Macaulay2Doc).

SpecialCubicFourfold -- the class of all special cubic fourfolds
****************************************************************

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

A cubic fourfold is a smooth cubic hypersurface in $\mathbb{P}^5$. A cubic
fourfold $X\subset \mathbb{P}^5$ is special of discriminant $d>6$ if it
contains an algebraic surface $S$, and the discriminant of the saturated
lattice spanned by $h^2$ and $[S]$ in
$H^{2,2}(X,\mathbb{Z}):=H^4(X,\mathbb{Z})\cap H^2(\Omega_X^2)$ is $d$, where
$h$ denotes the class of a hyperplane section of $X$. The set $\mathcal{C}_d$
of special cubic fourfolds of discriminant $d$ is either empty or an
irreducible divisor inside the moduli space of cubic fourfolds $\mathcal{C}$.
Moreover, $\mathcal{C}_d\neq \emptyset$ if and only if $d>6$ and $d=$0 or 2
(mod 6). For the general theory, see the papers Special cubic fourfolds (see
https://link.springer.com/article/10.1023/A:1001706324425 ) and Some rational
cubic fourfolds (see http://imperium.lenin.ru/~kaledin/math/hasset.pdf ), by B.
Hassett.

An object of the class SpecialCubicFourfold, is
basically represented by a couple (S,X), where $X$ is a cubic fourfold and $S$
is a surface contained in $X$. The surface $S$ is required to be smooth or with
at most a finite number $n$ of non-normal nodes. This number $n$ (if known) can
be specified manually using the option NumNodes. The main constructor for the
objects of the class is the function specialCubicFourfold.

See also
========

  * discriminant(SpecialCubicFourfold)
    -- discriminant of a special cubic
    fourfold

Functions and methods returning a special cubic fourfold :
==========================================================

  * specialCubicFourfold -- make a special cubic
    fourfold

Methods that use a special cubic fourfold :
===========================================

  * associatedK3surface(SpecialCubicFourfold)
    -- K3 surface associated to
    a rational cubic fourfold
  * "detectCongruence(SpecialCubicFourfold)" -- see
    detectCongruence(SpecialCubicFourfold,ZZ),
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e
  * detectCongruence(SpecialCubicFourfold,ZZ)
    -- detect and return a
    congruence of (3e-1)-secant curves of degree e
  * "isAdmissible(SpecialCubicFourfold)" -- see isAdmissible,
    -- whether an integer is admissible (in the sense of the
    theory of cubic fourfolds)
  * map(SpecialCubicFourfold), --
    associated cubic map
  * "mirrorFourfold(SpecialCubicFourfold)" -- see mirrorFourfold,
    -- associated fourfold to a rational cubic or GM fourfold
  * parameterCount(SpecialCubicFourfold)
    -- count of parameters in the
    moduli space of GM fourfolds
  * "unirationalParametrization(SpecialCubicFourfold)" -- see
    unirationalParametrization, -- unirational
    parametrization
  * "unirationalParametrization(SpecialCubicFourfold,EmbeddedProjectiveVariety
    )" -- see unirationalParametrization, --
    unirational parametrization

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

The object SpecialCubicFourfold, is a type (Macaulay2Doc),
with ancestor classes HodgeSpecialFourfold,
< EmbeddedProjectiveVariety (MultiprojectiveVarieties)
<
MultiprojectiveVariety (MultiprojectiveVarieties) <
MutableHashTable (Macaulay2Doc) < HashTable (Macaulay2Doc)
< Thing (Macaulay2Doc).

specialCubicFourfold -- make a special cubic fourfold
*****************************************************

Synopsis
========

  * Usage:
        specialCubicFourfold(S,X)
        specialCubicFourfold(S,X,NumNodes=>n)
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
        an irreducible
        surface $S\subset\mathbb{P}^5$, which has as singularities only a
        finite number $n\geq 0$ of non-normal nodes (this number $n$ should be
        passed with the option NumNodes, otherwise it is obtained using a
        probabilistic method)
      * X, an embedded projective variety (MultiprojectiveVarieties),
        a smooth cubic
        fourfold $X\subset \mathbb{P}^5$ containing the surface $S$
  * Optional inputs (Macaulay2Doc),:
      * InputCheck => ..., default value 1
      * NumNodes => ..., default value null
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special cubic fourfold, the special
        cubic fourfold corresponding to the pair $(S,X)$

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

In the example below, we define a cubic fourfold containing a rational scroll
of degree 7 with 3 nodes.

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/33331; x = gens ring PP_K^5;                                     |
+-----------------------------------------------------------------------------+
|i3 : S = projectiveVariety ideal(x_0*x_2*x_3-2*x_1*x_2*x_3-x_1*x_3^2-x_2*x_3^|
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^5                                      |
|-----------------------------------------------------------------------------|
|2-x_0*x_1*x_4+2*x_1^2*x_4-x_1*x_2*x_4+x_2^2*x_4+2*x_0*x_3*x_4-x_1*x_3*x_4-x_1|
|-----------------------------------------------------------------------------|
|*x_4^2+x_1*x_3*x_5, x_1^2*x_3-4*x_1*x_2*x_3-x_0*x_3^2-3*x_1*x_3^2-2*x_2*x_3^2|
|-----------------------------------------------------------------------------|
|+2*x_0^2*x_4-9*x_0*x_1*x_4+11*x_1^2*x_4-x_0*x_2*x_4-2*x_1*x_2*x_4+2*x_2^2*x_4|
|-----------------------------------------------------------------------------|
|+12*x_0*x_3*x_4-7*x_1*x_3*x_4-4*x_3^2*x_4+x_0*x_4^2-6*x_1*x_4^2+4*x_2*x_4^2-2|
|-----------------------------------------------------------------------------|
|*x_3*x_4^2-2*x_4^3-x_0*x_1*x_5+x_1^2*x_5+2*x_1*x_2*x_5+3*x_0*x_3*x_5+2*x_1*x_|
|-----------------------------------------------------------------------------|
|3*x_5-x_3^2*x_5-x_0*x_4*x_5-4*x_1*x_4*x_5+3*x_2*x_4*x_5+2*x_3*x_4*x_5-x_1*x_5|
|-----------------------------------------------------------------------------|
|^2, x_0*x_1*x_3-7*x_1*x_2*x_3-3*x_0*x_3^2-4*x_1*x_3^2-3*x_2*x_3^2+x_3^3+3*x_0|
|-----------------------------------------------------------------------------|
|^2*x_4-14*x_0*x_1*x_4+17*x_1^2*x_4-x_0*x_2*x_4-3*x_1*x_2*x_4+3*x_2^2*x_4+19*x|
|-----------------------------------------------------------------------------|
|_0*x_3*x_4-9*x_1*x_3*x_4-x_2*x_3*x_4-6*x_3^2*x_4+x_0*x_4^2-9*x_1*x_4^2+6*x_2*|
|-----------------------------------------------------------------------------|
|x_4^2-3*x_3*x_4^2-3*x_4^3-2*x_0*x_1*x_5+2*x_1^2*x_5+4*x_1*x_2*x_5+5*x_0*x_3*x|
|-----------------------------------------------------------------------------|
|_5+4*x_1*x_3*x_5-2*x_3^2*x_5-2*x_0*x_4*x_5-7*x_1*x_4*x_5+5*x_2*x_4*x_5+3*x_3*|
|-----------------------------------------------------------------------------|
|x_4*x_5-2*x_1*x_5^2, x_0^2*x_3-12*x_1*x_2*x_3-6*x_0*x_3^2-6*x_1*x_3^2-5*x_2*x|
|-----------------------------------------------------------------------------|
|_3^2+2*x_3^3+5*x_0^2*x_4-24*x_0*x_1*x_4+29*x_1^2*x_4-x_0*x_2*x_4-5*x_1*x_2*x_|
|-----------------------------------------------------------------------------|
|4+5*x_2^2*x_4+32*x_0*x_3*x_4-14*x_1*x_3*x_4-2*x_2*x_3*x_4-10*x_3^2*x_4+x_0*x_|
|-----------------------------------------------------------------------------|
|4^2-15*x_1*x_4^2+10*x_2*x_4^2-5*x_3*x_4^2-5*x_4^3-3*x_0*x_1*x_5+3*x_1^2*x_5+6|
|-----------------------------------------------------------------------------|
|*x_1*x_2*x_5+8*x_0*x_3*x_5+7*x_1*x_3*x_5-3*x_3^2*x_5-3*x_0*x_4*x_5-11*x_1*x_4|
|-----------------------------------------------------------------------------|
|*x_5+8*x_2*x_4*x_5+5*x_3*x_4*x_5-3*x_1*x_5^2,                                |
|-----------------------------------------------------------------------------|
|x_1*x_2^2+6*x_1*x_2*x_3+2*x_0*x_3^2+3*x_1*x_3^2+2*x_2*x_3^2-x_3^3-3*x_0^2*x_4|
|-----------------------------------------------------------------------------|
|+12*x_0*x_1*x_4-14*x_1^2*x_4-2*x_2^2*x_4-15*x_0*x_3*x_4+6*x_1*x_3*x_4+x_2*x_3|
|-----------------------------------------------------------------------------|
|*x_4+5*x_3^2*x_4+x_0*x_4^2+8*x_1*x_4^2-5*x_2*x_4^2+2*x_3*x_4^2+2*x_4^3+x_0*x_|
|-----------------------------------------------------------------------------|
|1*x_5-2*x_1^2*x_5-4*x_1*x_2*x_5-4*x_0*x_3*x_5-3*x_1*x_3*x_5+2*x_3^2*x_5+2*x_0|
|-----------------------------------------------------------------------------|
|*x_4*x_5+7*x_1*x_4*x_5-4*x_2*x_4*x_5-2*x_3*x_4*x_5+2*x_1*x_5^2,              |
|-----------------------------------------------------------------------------|
|x_0*x_2^2+10*x_1*x_2*x_3+3*x_0*x_3^2+5*x_1*x_3^2+4*x_2*x_3^2-x_3^3-5*x_0^2*x_|
|-----------------------------------------------------------------------------|
|4+19*x_0*x_1*x_4-22*x_1^2*x_4-x_0*x_2*x_4+3*x_1*x_2*x_4-4*x_2^2*x_4-24*x_0*x_|
|-----------------------------------------------------------------------------|
|3*x_4+9*x_1*x_3*x_4+x_2*x_3*x_4+8*x_3^2*x_4+2*x_0*x_4^2+11*x_1*x_4^2-7*x_2*x_|
|-----------------------------------------------------------------------------|
|4^2+4*x_3*x_4^2+3*x_4^3+2*x_0*x_1*x_5-4*x_1^2*x_5-7*x_1*x_2*x_5-7*x_0*x_3*x_5|
|-----------------------------------------------------------------------------|
|-5*x_1*x_3*x_5-x_2*x_3*x_5+3*x_3^2*x_5+4*x_0*x_4*x_5+12*x_1*x_4*x_5-7*x_2*x_4|
|-----------------------------------------------------------------------------|
|*x_5-3*x_3*x_4*x_5+4*x_1*x_5^2,                                              |
|-----------------------------------------------------------------------------|
|x_1^2*x_2+17*x_1*x_2*x_3+6*x_0*x_3^2+9*x_1*x_3^2+7*x_2*x_3^2-2*x_3^3-9*x_0^2*|
|-----------------------------------------------------------------------------|
|x_4+36*x_0*x_1*x_4-44*x_1^2*x_4+3*x_0*x_2*x_4+5*x_1*x_2*x_4-7*x_2^2*x_4-47*x_|
|-----------------------------------------------------------------------------|
|0*x_3*x_4+21*x_1*x_3*x_4+2*x_2*x_3*x_4+16*x_3^2*x_4+24*x_1*x_4^2-16*x_2*x_4^2|
|-----------------------------------------------------------------------------|
|+7*x_3*x_4^2+7*x_4^3+3*x_0*x_1*x_5-6*x_1^2*x_5-9*x_1*x_2*x_5-12*x_0*x_3*x_5-8|
|-----------------------------------------------------------------------------|
|*x_1*x_3*x_5+5*x_3^2*x_5+5*x_0*x_4*x_5+19*x_1*x_4*x_5-12*x_2*x_4*x_5-7*x_3*x_|
|-----------------------------------------------------------------------------|
|4*x_5+5*x_1*x_5^2, x_0*x_1*x_2+29*x_1*x_2*x_3+11*x_0*x_3^2+15*x_1*x_3^2+12*x_|
|-----------------------------------------------------------------------------|
|2*x_3^2-4*x_3^3-16*x_0^2*x_4+62*x_0*x_1*x_4-74*x_1^2*x_4+5*x_0*x_2*x_4+9*x_1*|
|-----------------------------------------------------------------------------|
|x_2*x_4-12*x_2^2*x_4-80*x_0*x_3*x_4+35*x_1*x_3*x_4+4*x_2*x_3*x_4+27*x_3^2*x_4|
|-----------------------------------------------------------------------------|
|+40*x_1*x_4^2-27*x_2*x_4^2+12*x_3*x_4^2+12*x_4^3+5*x_0*x_1*x_5-10*x_1^2*x_5- |
|-----------------------------------------------------------------------------|
|16*x_1*x_2*x_5-21*x_0*x_3*x_5-14*x_1*x_3*x_5+9*x_3^2*x_5+9*x_0*x_4*x_5+33*x_1|
|-----------------------------------------------------------------------------|
|*x_4*x_5-21*x_2*x_4*x_5-12*x_3*x_4*x_5+9*x_1*x_5^2,                          |
|-----------------------------------------------------------------------------|
|x_0^2*x_2+49*x_1*x_2*x_3+19*x_0*x_3^2+25*x_1*x_3^2+20*x_2*x_3^2-7*x_3^3-28*x_|
|-----------------------------------------------------------------------------|
|0^2*x_4+106*x_0*x_1*x_4-124*x_1^2*x_4+8*x_0*x_2*x_4+16*x_1*x_2*x_4-20*x_2^2*x|
|-----------------------------------------------------------------------------|
|_4-134*x_0*x_3*x_4+58*x_1*x_3*x_4+7*x_2*x_3*x_4+45*x_3^2*x_4+66*x_1*x_4^2-45*|
|-----------------------------------------------------------------------------|
|x_2*x_4^2+20*x_3*x_4^2+20*x_4^3+9*x_0*x_1*x_5-18*x_1^2*x_5-28*x_1*x_2*x_5-37*|
|-----------------------------------------------------------------------------|
|x_0*x_3*x_5-23*x_1*x_3*x_5+16*x_3^2*x_5+16*x_0*x_4*x_5+57*x_1*x_4*x_5-36*x_2*|
|-----------------------------------------------------------------------------|
|x_4*x_5-20*x_3*x_4*x_5+16*x_1*x_5^2,                                         |
|-----------------------------------------------------------------------------|
|x_1^3+47*x_1*x_2*x_3+18*x_0*x_3^2+23*x_1*x_3^2+19*x_2*x_3^2-7*x_3^3-24*x_0^2*|
|-----------------------------------------------------------------------------|
|x_4+97*x_0*x_1*x_4-117*x_1^2*x_4+8*x_0*x_2*x_4+16*x_1*x_2*x_4-19*x_2^2*x_4-  |
|-----------------------------------------------------------------------------|
|127*x_0*x_3*x_4+54*x_1*x_3*x_4+7*x_2*x_3*x_4+42*x_3^2*x_4-x_0*x_4^2+62*x_1*x_|
|-----------------------------------------------------------------------------|
|4^2-42*x_2*x_4^2+19*x_3*x_4^2+19*x_4^3+9*x_0*x_1*x_5-16*x_1^2*x_5-25*x_1*x_2*|
|-----------------------------------------------------------------------------|
|x_5-33*x_0*x_3*x_5-23*x_1*x_3*x_5+14*x_3^2*x_5+14*x_0*x_4*x_5+51*x_1*x_4*x_5-|
|-----------------------------------------------------------------------------|
|33*x_2*x_4*x_5-19*x_3*x_4*x_5+14*x_1*x_5^2,                                  |
|-----------------------------------------------------------------------------|
|x_0*x_1^2+79*x_1*x_2*x_3+29*x_0*x_3^2+40*x_1*x_3^2+32*x_2*x_3^2-11*x_3^3-41*x|
|-----------------------------------------------------------------------------|
|_0^2*x_4+164*x_0*x_1*x_4-196*x_1^2*x_4+14*x_0*x_2*x_4+26*x_1*x_2*x_4-32*x_2^2|
|-----------------------------------------------------------------------------|
|*x_4-214*x_0*x_3*x_4+92*x_1*x_3*x_4+11*x_2*x_3*x_4+71*x_3^2*x_4-2*x_0*x_4^2+ |
|-----------------------------------------------------------------------------|
|105*x_1*x_4^2-71*x_2*x_4^2+32*x_3*x_4^2+32*x_4^3+14*x_0*x_1*x_5-26*x_1^2*x_5-|
|-----------------------------------------------------------------------------|
|41*x_1*x_2*x_5-55*x_0*x_3*x_5-38*x_1*x_3*x_5+23*x_3^2*x_5+23*x_0*x_4*x_5+85*x|
|-----------------------------------------------------------------------------|
|_1*x_4*x_5-55*x_2*x_4*x_5-32*x_3*x_4*x_5+23*x_1*x_5^2,                       |
|-----------------------------------------------------------------------------|
|x_0^2*x_1+133*x_1*x_2*x_3+48*x_0*x_3^2+68*x_1*x_3^2+54*x_2*x_3^2-18*x_3^3-70*|
|-----------------------------------------------------------------------------|
|x_0^2*x_4+278*x_0*x_1*x_4-330*x_1^2*x_4+24*x_0*x_2*x_4+44*x_1*x_2*x_4-54*x_2^|
|-----------------------------------------------------------------------------|
|2*x_4-361*x_0*x_3*x_4+156*x_1*x_3*x_4+18*x_2*x_3*x_4+120*x_3^2*x_4-4*x_0*x_4^|
|-----------------------------------------------------------------------------|
|2+177*x_1*x_4^2-120*x_2*x_4^2+54*x_3*x_4^2+54*x_4^3+23*x_0*x_1*x_5-44*x_1^2*x|
|-----------------------------------------------------------------------------|
|_5-69*x_1*x_2*x_5-93*x_0*x_3*x_5-63*x_1*x_3*x_5+39*x_3^2*x_5+39*x_0*x_4*x_5+ |
|-----------------------------------------------------------------------------|
|144*x_1*x_4*x_5-93*x_2*x_4*x_5-54*x_3*x_4*x_5+39*x_1*x_5^2,                  |
|-----------------------------------------------------------------------------|
|x_0^3+224*x_1*x_2*x_3+80*x_0*x_3^2+115*x_1*x_3^2+91*x_2*x_3^2-30*x_3^3-119*x_|
|-----------------------------------------------------------------------------|
|0^2*x_4+470*x_0*x_1*x_4-555*x_1^2*x_4+41*x_0*x_2*x_4+75*x_1*x_2*x_4-91*x_2^2*|
|-----------------------------------------------------------------------------|
|x_4-608*x_0*x_3*x_4+263*x_1*x_3*x_4+30*x_2*x_3*x_4+202*x_3^2*x_4-8*x_0*x_4^2+|
|-----------------------------------------------------------------------------|
|297*x_1*x_4^2-202*x_2*x_4^2+91*x_3*x_4^2+91*x_4^3+39*x_0*x_1*x_5-76*x_1^2*x_5|
|-----------------------------------------------------------------------------|
|-118*x_1*x_2*x_5-158*x_0*x_3*x_5-105*x_1*x_3*x_5+67*x_3^2*x_5+68*x_0*x_4*x_5+|
|-----------------------------------------------------------------------------|
|245*x_1*x_4*x_5-158*x_2*x_4*x_5-91*x_3*x_4*x_5+67*x_1*x_5^2);                |
+-----------------------------------------------------------------------------+
|i4 : X = projectiveVariety ideal(x_1^2*x_3+x_0*x_2*x_3-6*x_1*x_2*x_3-x_0*x_3^|
|                                                                             |
|o4 : ProjectiveVariety, hypersurface in PP^5                                 |
|-----------------------------------------------------------------------------|
|2-4*x_1*x_3^2-3*x_2*x_3^2+2*x_0^2*x_4-10*x_0*x_1*x_4+13*x_1^2*x_4-x_0*x_2*x_4|
|-----------------------------------------------------------------------------|
|-3*x_1*x_2*x_4+3*x_2^2*x_4+14*x_0*x_3*x_4-8*x_1*x_3*x_4-4*x_3^2*x_4+x_0*x_4^2|
|-----------------------------------------------------------------------------|
|-7*x_1*x_4^2+4*x_2*x_4^2-2*x_3*x_4^2-2*x_4^3-x_0*x_1*x_5+x_1^2*x_5+2*x_1*x_2*|
|-----------------------------------------------------------------------------|
|x_5+3*x_0*x_3*x_5+3*x_1*x_3*x_5-x_3^2*x_5-x_0*x_4*x_5-4*x_1*x_4*x_5+3*x_2*x_4|
|-----------------------------------------------------------------------------|
|*x_5+2*x_3*x_4*x_5-x_1*x_5^2);                                               |
+-----------------------------------------------------------------------------+
|i5 : time F = specialCubicFourfold(S,X,NumNodes=>3);                         |
|     -- used 0.0120788 seconds                                               |
|                                                                             |
|o5 : ProjectiveVariety, cubic fourfold containing a surface of degree 7 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i6 : time describe F                                                         |
|warning: clearing value of symbol x to allow access to subscripted variables |
|       : debug with expression   debug 9868   or with command line option    |
|     -- used 0.134436 seconds                                                |
|                                                                             |
|o6 = Special cubic fourfold of discriminant 26                               |
|     containing a 3-nodal surface of degree 7 and sectional genus 0          |
|     cut out by 13 hypersurfaces of degree 3                                 |
|-----------------------------------------------------------------------------|
| based on it                                                                 |
|--debug 9868                                                                 |
+-----------------------------------------------------------------------------+
|i7 : assert(F == X)                                                          |
+-----------------------------------------------------------------------------+

See also
========

  * specialCubicFourfold(EmbeddedProjectiveVariety)
    -- random special
    cubic fourfold
  * specialCubicFourfold(String,Ring)
    -- random special cubic fourfold
    of a given type
  * specialFourfold -- make a Hodge-special fourfold

Ways to use specialCubicFourfold :
==================================

  * "specialCubicFourfold(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"
  * "specialCubicFourfold(Ideal,Ideal)"
  * "specialCubicFourfold(Ideal,RingElement)"
  * specialCubicFourfold(EmbeddedProjectiveVariety)
    -- random special
    cubic fourfold
  * "specialCubicFourfold(Ideal)" -- see
    specialCubicFourfold(EmbeddedProjectiveVariety),
    -- random special
    cubic fourfold
  * "specialCubicFourfold(String)" -- see
    specialCubicFourfold(String,Ring),
    -- random special cubic fourfold of a given type
  * specialCubicFourfold(String,Ring)
    -- random special cubic fourfold
    of a given type

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

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

specialCubicFourfold(EmbeddedProjectiveVariety) -- random special cubic fourfold
********************************************************************************

Synopsis
========

  * Function: specialCubicFourfold,
  * Usage:
        specialCubicFourfold S
        specialCubicFourfold(S,NumNodes=>n)
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
        an irreducible
        surface in $\mathbb{P}^5$
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1, make a
        special cubic fourfold
      * NumNodes, => ..., default value null, make
        a special cubic fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special cubic fourfold, a random cubic
        fourfold containing the given surface

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

+-----------------------------------------------------------------------------+
|i1 : -- quintic del Pezzo surface                                            |
|     S = surface({3,4},ZZ/33331);                                            |
|                                                                             |
|o1 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i2 : X = specialCubicFourfold S;                                             |
|                                                                             |
|o2 : ProjectiveVariety, cubic fourfold containing a surface of degree 5 and  |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i3 : discriminant X                                                          |
|                                                                             |
|o3 = 14                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * specialCubicFourfold(String,Ring)
    -- random special cubic fourfold
    of a given type

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

  * specialCubicFourfold(EmbeddedProjectiveVariety)
    -- random special
    cubic fourfold
  * "specialCubicFourfold(Ideal)"

specialCubicFourfold(String,Ring) -- random special cubic fourfold of a given type
**********************************************************************************

Synopsis
========

  * Function: specialCubicFourfold,
  * Usage:
        specialCubicFourfold(n,K)
        specialCubicFourfold n
  * Inputs:
      * n, a string (Macaulay2Doc), the name of some known type
        of cubic fourfolds
      * K, a ring (Macaulay2Doc), the coefficient ring
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1, make a
        special cubic fourfold
      * NumNodes, => ..., default value null, make
        a special cubic fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special cubic fourfold, a random special
        cubic fourfold of the indicated type over K

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

+-----------------------------------------------------------------------------+
|i1 : X = specialCubicFourfold("3-nodal septic scroll",ZZ/65521);             |
|                                                                             |
|o1 : ProjectiveVariety, cubic fourfold containing a surface of degree 7 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special cubic fourfold of discriminant 26                               |
|     containing a 3-nodal surface of degree 7 and sectional genus 0          |
|     cut out by 13 hypersurfaces of degree 3                                 |
+-----------------------------------------------------------------------------+

See also
========

  * specialCubicFourfold(EmbeddedProjectiveVariety)
    -- random special
    cubic fourfold

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

  * "specialCubicFourfold(String)"
  * specialCubicFourfold(String,Ring)
    -- random special cubic fourfold
    of a given type

specialFourfold -- make a Hodge-special fourfold
************************************************

Synopsis
========

  * Usage:
        specialFourfold(S,X,V)
        specialFourfold(S,X)
        specialFourfold S
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
        an irreducible
        surface,
      * X, an embedded projective variety (MultiprojectiveVarieties),
        a smooth fourfold
        $X$ containing the surface $S$
      * V, an embedded projective variety (MultiprojectiveVarieties),
        optional, a
        fivefold, where X is a hypersurface
  * Optional inputs (Macaulay2Doc),:
      * InputCheck => ..., default value 1
      * NumNodes => ..., default value null
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a Hodge-special fourfold, which
        corresponds to the pair $(S,X)$

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

This can also be used as a shortcut for both specialCubicFourfold,
and specialGushelMukaiFourfold.

+-----------------------------------------------------------------------------+
|i1 : S = surface {3,4};                                                      |
|                                                                             |
|o1 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i2 : X = specialFourfold S -- a random cubic fourfold through S              |
|                                                                             |
|o2 = X                                                                       |
|                                                                             |
|o2 : ProjectiveVariety, cubic fourfold containing a surface of degree 5 and  |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i3 : describe X                                                              |
|                                                                             |
|o3 = Special cubic fourfold of discriminant 14                               |
|     containing a (smooth) surface of degree 5 and sectional genus 1         |
|     cut out by 5 hypersurfaces of degree 2                                  |
+-----------------------------------------------------------------------------+
|i4 : Y = specialFourfold "tau-quadric" -- a random GM fourfold through a     |
|                                                                             |
|o4 = Y                                                                       |
|                                                                             |
|o4 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|tau-quadric                                                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i5 : describe Y                                                              |
|                                                                             |
|o5 = Special Gushel-Mukai fourfold of discriminant 10(')                     |
|     containing a surface in PP^8 of degree 2 and sectional genus 0          |
|     cut out by 6 hypersurfaces of degrees (1,1,1,1,1,2)                     |
|     and with class in G(1,4) given by s_(3,1)+s_(2,2)                       |
|     Type: ordinary                                                          |
|     (case 1 of Table 1 in arXiv:2002.07026)                                 |
+-----------------------------------------------------------------------------+
|i6 : T = surface {3,2};                                                      |
|                                                                             |
|o6 : ProjectiveVariety, surface in PP^7                                      |
+-----------------------------------------------------------------------------+
|i7 : Z = specialFourfold T -- a random c. i. of 3 quadrics through T         |
|                                                                             |
|o7 = Z                                                                       |
|                                                                             |
|o7 : ProjectiveVariety, complete intersection of three quadrics in PP^7      |
|-----------------------------------------------------------------------------|
|containing a surface of degree 7 and sectional genus 1                       |
+-----------------------------------------------------------------------------+
|i8 : describe Z                                                              |
|                                                                             |
|o8 = Complete intersection of 3 quadrics in PP^7                             |
|     of discriminant 79 = det| 8 7  |                                        |
|                             | 7 16 |                                        |
|     containing a smooth surface of degree 7 and sectional genus 1           |
|     cut out by 14 hypersurfaces of degree 2                                 |
+-----------------------------------------------------------------------------+

See also
========

  * specialCubicFourfold -- make a special cubic
    fourfold
  * specialGushelMukaiFourfold -- make a
    special Gushel-Mukai fourfold

Ways to use specialFourfold :
=============================

  * "specialFourfold(EmbeddedProjectiveVariety)"
  * "specialFourfold(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety)"
  * "specialFourfold(EmbeddedProjectiveVariety,EmbeddedProjectiveVariety,
    EmbeddedProjectiveVariety)"
  * "specialFourfold(Ideal)"
  * "specialFourfold(Ideal,Ideal)"
  * "specialFourfold(Ideal,RingElement)"
  * "specialFourfold(String)"
  * "specialFourfold(String,Ring)"
  * specialFourfold(String,ZZ) -- load
    a prebuilt example of fourfold

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

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

specialFourfold(String,ZZ) -- load a prebuilt example of fourfold
*****************************************************************

Synopsis
========

  * Function: specialFourfold,
  * Usage:
        specialFourfold(str,i)
  * Inputs:
      * str, a string (Macaulay2Doc), such as
        "prebuilt-example-in-P5" or "prebuilt-example-in-P7".
      * i, an integer (Macaulay2Doc),
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1, make a
        Hodge-special fourfold
      * NumNodes, => ..., default value null, make a
        Hodge-special fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a Hodge-special fourfold, the i-th example
        of fourfold in accordance with some classification (e.g.,
        specialFourfold("prebuilt-example-in-P5",i) is the same as
        source (MultiprojectiveVarieties),
        trisecantFlop,(i).

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

This function requires the package TrisecantFlops (see
https://github.com/giovannistagliano/TrisecantFlops ). If not present the user
will be asked to automatically install the package.

See also
========

  * trisecantFlop -- examples of trisecant flops

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

  * specialFourfold(String,ZZ) -- load
    a prebuilt example of fourfold

SpecialGushelMukaiFourfold -- the class of all special Gushel-Mukai fourfolds
*****************************************************************************

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

The general type of Gushel-Mukai fourfold (called ordinary) can be realized as
the intersection of a smooth del Pezzo fivefold
$\mathbb{G}(1,4)\cap\mathbb{P}^8\subset \mathbb{P}^8$ with a quadric
hypersurface in $\mathbb{P}^8$. A Gushel-Mukai fourfold is said to be special
if it contains a surface whose cohomology class does not come from the
Grassmannian $\mathbb{G}(1,4)$. The special Gushel-Mukai fourfolds are
parametrized by a countable union of (not necessarily irreducible)
hypersurfaces in the corresponding moduli space, labelled by the integers $d
\geq 10$ with $d = 0, 2, 4\ ({mod}\ 8)$; the number $d$ is called the
discriminant of the fourfold. For precise definition and results, we refer
mainly to the paper Special prime Fano fourfolds of degree 10 and index 2 (see
https://arxiv.org/abs/1302.1398 ), by O. Debarre, A. Iliev, and L. Manivel.

An object of the class SpecialGushelMukaiFourfold,
is basically represented by a couple (S,X), where
$X$ is a Gushel-Mukai fourfold and $S$ is a surface contained in $X$.  The main
constructor for the objects of the class is the function
specialGushelMukaiFourfold.

See also
========

  * discriminant(SpecialGushelMukaiFourfold)
    -- discriminant of a special
    Gushel-Mukai fourfold

Functions and methods returning a special Gushel-Mukai fourfold :
=================================================================

  * specialGushelMukaiFourfold -- make a
    special Gushel-Mukai fourfold

Methods that use a special Gushel-Mukai fourfold :
==================================================

  * associatedK3surface(SpecialGushelMukaiFourfold)
    -- K3 surface
    associated to a rational Gushel-Mukai fourfold
  * "detectCongruence(SpecialGushelMukaiFourfold)" -- see
    detectCongruence(SpecialGushelMukaiFourfold,ZZ),
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold
  * detectCongruence(SpecialGushelMukaiFourfold,ZZ)
    -- detect and return
    a congruence of (2e-1)-secant curves of degree e inside a del Pezzo
    fivefold
  * discriminant(SpecialGushelMukaiFourfold)
    -- discriminant of a special
    Gushel-Mukai fourfold
  * "fromOrdinaryToGushel(SpecialGushelMukaiFourfold)" -- see
    fromOrdinaryToGushel, -- try to deform to a fourfold
    of Gushel type
  * "isAdmissibleGM(SpecialGushelMukaiFourfold)" -- see isAdmissibleGM,
    -- whether an integer is admissible (in the sense of the
    theory of GM fourfolds)
  * map(SpecialGushelMukaiFourfold),
    -- associated quadratic map
  * "mirrorFourfold(SpecialGushelMukaiFourfold)" -- see mirrorFourfold,
    -- associated fourfold to a rational cubic or GM fourfold
  * parameterCount(SpecialGushelMukaiFourfold)
    -- count of parameters in
    the moduli space of GM fourfolds
  * "toGrass(SpecialGushelMukaiFourfold)" -- see toGrass, --
    Gushel morphism from a GM fourfold to GG(1,4)
  * "unirationalParametrization(SpecialGushelMukaiFourfold)" -- see
    unirationalParametrization, -- unirational
    parametrization

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

The object SpecialGushelMukaiFourfold, is a
type (Macaulay2Doc), with ancestor classes
HodgeSpecialFourfold, < EmbeddedProjectiveVariety (MultiprojectiveVarieties)
<
MultiprojectiveVariety (MultiprojectiveVarieties) <
MutableHashTable (Macaulay2Doc) < HashTable (Macaulay2Doc)
< Thing (Macaulay2Doc).

specialGushelMukaiFourfold -- make a special Gushel-Mukai fourfold
******************************************************************

Synopsis
========

  * Usage:
        specialGushelMukaiFourfold(S,X)
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
        a smooth
        irreducible surface $S\subset\mathbb{P}^8$
      * X, an embedded projective variety (MultiprojectiveVarieties),
        a smooth prime
        Fano fourfold $X\subset \mathbb{P}^8$ of degree 10 and sectional genus
        6, which contains the surface $S$
  * Optional inputs (Macaulay2Doc),:
      * InputCheck => ..., default value 1
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special Gushel-Mukai fourfold, the
        special Gushel-Mukai fourfold corresponding to the pair $(S,X)$

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

In the following example, we define a Gushel-Mukai fourfold containing a
so-called $\tau$-quadric.

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/33331; x = gens ring PP_K^8;                                     |
+-----------------------------------------------------------------------------+
|i3 : S = projectiveVariety ideal(x_6-x_7, x_5, x_3-x_4, x_1, x_0-x_4,        |
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^8                                      |
|-----------------------------------------------------------------------------|
|x_2*x_7-x_4*x_8);                                                            |
+-----------------------------------------------------------------------------+
|i4 : X = projectiveVariety ideal(x_4*x_6-x_3*x_7+x_1*x_8,                    |
|                                                                             |
|o4 : ProjectiveVariety, 4-dimensional subvariety of PP^8                     |
|-----------------------------------------------------------------------------|
|x_4*x_5-x_2*x_7+x_0*x_8, x_3*x_5-x_2*x_6+x_0*x_8+x_1*x_8-x_5*x_8,            |
|-----------------------------------------------------------------------------|
|x_1*x_5-x_0*x_6+x_0*x_7+x_1*x_7-x_5*x_7,                                     |
|-----------------------------------------------------------------------------|
|x_1*x_2-x_0*x_3+x_0*x_4+x_1*x_4-x_2*x_7+x_0*x_8,                             |
|-----------------------------------------------------------------------------|
|x_0^2+x_0*x_1+x_1^2+x_0*x_2+2*x_0*x_3+x_1*x_3+x_2*x_3+x_3^2-x_0*x_4-x_1*x_4-2|
|-----------------------------------------------------------------------------|
|*x_2*x_4-x_3*x_4-2*x_4^2+x_0*x_5+x_2*x_5+x_5^2+2*x_0*x_6+x_1*x_6+2*x_2*x_6+x_|
|-----------------------------------------------------------------------------|
|3*x_6+x_5*x_6+x_6^2-3*x_4*x_7+2*x_5*x_7-x_7^2+x_1*x_8+x_3*x_8-3*x_4*x_8+2*x_5|
|-----------------------------------------------------------------------------|
|*x_8+x_6*x_8-x_7*x_8);                                                       |
+-----------------------------------------------------------------------------+
|i5 : time F = specialGushelMukaiFourfold(S,X);                               |
|     -- used 1.23658 seconds                                                 |
|                                                                             |
|o5 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i6 : time describe F                                                         |
|warning: clearing value of symbol x to allow access to subscripted variables |
|       : debug with expression   debug 9868   or with command line option    |
|     -- used 2.36919 seconds                                                 |
|                                                                             |
|o6 = Special Gushel-Mukai fourfold of discriminant 10(')                     |
|     containing a surface in PP^8 of degree 2 and sectional genus 0          |
|     cut out by 6 hypersurfaces of degrees (1,1,1,1,1,2)                     |
|     and with class in G(1,4) given by s_(3,1)+s_(2,2)                       |
|     Type: ordinary                                                          |
|     (case 1 of Table 1 in arXiv:2002.07026)                                 |
|-----------------------------------------------------------------------------|
| based on it                                                                 |
|--debug 9868                                                                 |
+-----------------------------------------------------------------------------+
|i7 : assert(F == X)                                                          |
+-----------------------------------------------------------------------------+

See also
========

  * specialGushelMukaiFourfold(EmbeddedProjectiveVariety)
    -- random
    special Gushel-Mukai fourfold
  * specialGushelMukaiFourfold(String,Ring)
    -- random special
    Gushel-Mukai fourfold of a given type
  * specialFourfold -- make a Hodge-special fourfold

Ways to use specialGushelMukaiFourfold :
========================================

  * "specialGushelMukaiFourfold(EmbeddedProjectiveVariety,
    EmbeddedProjectiveVariety)"
  * "specialGushelMukaiFourfold(Ideal,Ideal)"
  * "specialGushelMukaiFourfold(Array,Array)" -- see
    specialGushelMukaiFourfold(Array,Array,String,Thing),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6
  * "specialGushelMukaiFourfold(Array,Array,String)" -- see
    specialGushelMukaiFourfold(Array,Array,String,Thing),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6
  * specialGushelMukaiFourfold(Array,Array,String,Thing),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6
  * "specialGushelMukaiFourfold(Array,Array,Thing)" -- see
    specialGushelMukaiFourfold(Array,Array,String,Thing),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6
  * specialGushelMukaiFourfold(EmbeddedProjectiveVariety)
    -- random
    special Gushel-Mukai fourfold
  * "specialGushelMukaiFourfold(Ideal)" -- see
    specialGushelMukaiFourfold(EmbeddedProjectiveVariety),
    -- random
    special Gushel-Mukai fourfold
  * "specialGushelMukaiFourfold(String)" -- see
    specialGushelMukaiFourfold(String,Ring),
    -- random special
    Gushel-Mukai fourfold of a given type
  * specialGushelMukaiFourfold(String,Ring)
    -- random special
    Gushel-Mukai fourfold of a given type

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

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

specialGushelMukaiFourfold(Array,Array,String,Thing) -- construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in PP^6
*************************************************************************************************************************************

Synopsis
========

  * Function: specialGushelMukaiFourfold,
  * Usage:
        specialGushelMukaiFourfold(surface,curve)
        specialGushelMukaiFourfold(surface,curve,scroll)
        specialGushelMukaiFourfold(surface,curve,K)
        specialGushelMukaiFourfold(surface,curve,scroll,K)
  * Inputs:
      * surface, an array (Macaulay2Doc), an array of integers
        [a,i,j,k,...] to indicate the rational surface $S\subset\mathbb{P}^6$
        constructed by surface,
        ({a,i,j,k,...},K,ambient=>6)
      * curve, an array (Macaulay2Doc), an array of integers
        [d,l,m,n,...] to indicate the plane representation of a curve $C$ on
        the surface $S$ (the command that constructs $C$ is
        S.cache#"takeCurve"(d,{l,m,n,...}))
      * scroll, a string (Macaulay2Doc), which can be either
        "cubic scroll" (the default value) or "quartic scroll", to indicate the
        type of scroll $B\subset\mathbb{P}^6$ to be used; in the former case
        $B\simeq\mathbb{P}^1\times\mathbb{P}^2\subset\mathbb{P}^5\subset\mathbb
        {P}^6$ while in the latter case $B\subset\mathbb{P}^6$ is a generic
        projection of a rational normal quartic scroll of dimension 4 in
        $\mathbb{P}^7$
      * K, a thing (Macaulay2Doc), the coefficient ring (ZZ/65521
        is used by default)
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1,
        make a special Gushel-Mukai fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special Gushel-Mukai fourfold, a
        GM fourfold $X$ containing the surface
        $\overline{\psi_{B}(S)}\subset\mathbb{G}(1,4)\subset\mathbb{P}^9$,
        where $B$ is a scroll of the indicated type such that $C\subseteq S\cap
        B$ and $\psi_{B}:\mathbb{P}^6\dashrightarrow\mathbb{G}(1,4)$ is the
        birational map defined by $B$

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

From the returned fourfold $X$, with the following commands we obtain the
surface $S$, the curve $C$, and the scroll $B$ used in the construction:

(B,C) = X.cache#"Construction"; S = ambientVariety C;

Then the surface $\overline{\psi_{B}(S)}\subset\mathbb{G}(1,4)$ can be
constructed with

psi = rationalMap B; (psi S)%(image psi);

In the following example we construct a GM fourfold containing the image via
$\psi_B:\mathbb{P}^6\dashrightarrow\mathbb{G}(1,4)$ of a quintic del Pezzo
surface $S\subset\mathbb{P}^5\subset\mathbb{P}^6$, obtained as the image of the
plane via the linear system of quartic curves with three general simple base
points and two general double points, which cuts
$B\simeq\mathbb{P}^1\times\mathbb{P}^2\subset\mathbb{P}^5\subset\mathbb{P}^6$
along a rational normal quartic curve obtained as the image of a general conic
passing through the two double points.

+-----------------------------------------------------------------------------+
|i1 : X = specialGushelMukaiFourfold([4, 3, 2],[2, 0, 2]);                    |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 6 and     |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special Gushel-Mukai fourfold of discriminant 18(')                     |
|     containing a surface in PP^8 of degree 6 and sectional genus 1          |
|     cut out by 11 hypersurfaces of degrees (1,1,2,2,2,2,2,2,2,2,2)          |
|     and with class in G(1,4) given by 3*s_(3,1)+3*s_(2,2)                   |
|     Type: ordinary                                                          |
+-----------------------------------------------------------------------------+
|i3 : (B,C) = X.cache#"Construction";                                         |
+-----------------------------------------------------------------------------+
|i4 : S = ambientVariety C;                                                   |
|                                                                             |
|o4 : ProjectiveVariety, surface in PP^6                                      |
+-----------------------------------------------------------------------------+
|i5 : C;                                                                      |
|                                                                             |
|o5 : ProjectiveVariety, curve in PP^6 (subvariety of codimension 1 in S)     |
+-----------------------------------------------------------------------------+
|i6 : B;                                                                      |
|                                                                             |
|o6 : ProjectiveVariety, threefold in PP^6                                    |
+-----------------------------------------------------------------------------+
|i7 : assert(C == S * B)                                                      |
+-----------------------------------------------------------------------------+

References
==========

  * G. Staglianò, Explicit computations with cubic fourfolds, Gushel-Mukai
    fourfolds, and their associated K3 surfaces, available at arXiv:2204.11518
    (see https://arxiv.org/abs/2204.11518 ) (2022).

See also
========

  * surface(VisibleList,Ring) -- get a rational
    surface
  * GMtables -- make examples of reducible subschemes of P^5

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

  * "specialGushelMukaiFourfold(Array,Array)"
  * "specialGushelMukaiFourfold(Array,Array,String)"
  * specialGushelMukaiFourfold(Array,Array,String,Thing),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6
  * "specialGushelMukaiFourfold(Array,Array,Thing)"

specialGushelMukaiFourfold(EmbeddedProjectiveVariety) -- random special Gushel-Mukai fourfold
*********************************************************************************************

Synopsis
========

  * Function: specialGushelMukaiFourfold,
  * Usage:
        specialGushelMukaiFourfold S
        specialGushelMukaiFourfold (S%Y)
  * Inputs:
      * S, an embedded projective variety (MultiprojectiveVarieties),
        a smooth
        irreducible surface $S$ which is a subvariety (MultiprojectiveVarieties),
        of a del Pezzo fivefold/sixfold $Y$;
        alternatively, you can pass the ideal of $S$ in $Y$ (e.g., an ideal in
        the ring Grass (Resultants),$(1,4)$)
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1,
        make a special Gushel-Mukai fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special Gushel-Mukai fourfold, a
        random special Gushel-Mukai fourfold containing the given surface

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

+-----------------------------------------------------------------------------+
|i1 : Y = GG(ZZ/33331,1,4);                                                   |
|                                                                             |
|o1 : ProjectiveVariety, GG(1,4)                                              |
+-----------------------------------------------------------------------------+
|i2 : -- cubic scroll in G(1,4)                                               |
|     S = schubertCycle({2,0},Y)                                              |
|                                                                             |
|o2 : ProjectiveVariety, surface                                              |
|-----------------------------------------------------------------------------|
|* schubertCycle({1,0},Y) * schubertCycle({1,0},Y);                           |
|                                                                             |
|in PP^9 (subvariety of codimension 4 in Y)                                   |
+-----------------------------------------------------------------------------+
|i3 : X = specialGushelMukaiFourfold S;                                       |
|                                                                             |
|o3 : ProjectiveVariety, GM fourfold containing a surface of degree 3 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i4 : discriminant X                                                          |
|                                                                             |
|o4 = 12                                                                      |
+-----------------------------------------------------------------------------+

See also
========

  * specialGushelMukaiFourfold(String,Ring)
    -- random special
    Gushel-Mukai fourfold of a given type
  * MultiprojectiveVariety % MultiprojectiveVariety (MultiprojectiveVarieties),
    -- subvariety of a projective variety

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

  * specialGushelMukaiFourfold(EmbeddedProjectiveVariety)
    -- random
    special Gushel-Mukai fourfold
  * "specialGushelMukaiFourfold(Ideal)"

specialGushelMukaiFourfold(String,Ring) -- random special Gushel-Mukai fourfold of a given type
***********************************************************************************************

Synopsis
========

  * Function: specialGushelMukaiFourfold,
  * Usage:
        specialGushelMukaiFourfold(n,K)
        specialGushelMukaiFourfold n
  * Inputs:
      * n, a string (Macaulay2Doc), the name of some known type
        of Gushel-Mukai fourfolds
      * K, a ring (Macaulay2Doc), the coefficient ring
  * Optional inputs (Macaulay2Doc),:
      * InputCheck, => ..., default value 1,
        make a special Gushel-Mukai fourfold
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * a special Gushel-Mukai fourfold, a
        random special Gushel-Mukai fourfold of the indicated type over K

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

+-----------------------------------------------------------------------------+
|i1 : X = specialGushelMukaiFourfold("cubic scroll",ZZ/65521);                |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 3 and     |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i2 : describe X                                                              |
|                                                                             |
|o2 = Special Gushel-Mukai fourfold of discriminant 12                        |
|     containing a surface in PP^8 of degree 3 and sectional genus 0          |
|     cut out by 7 hypersurfaces of degrees (1,1,1,1,2,2,2)                   |
|     and with class in G(1,4) given by 2*s_(3,1)+s_(2,2)                     |
|     Type: ordinary                                                          |
|     (case 7 of Table 1 in arXiv:2002.07026)                                 |
+-----------------------------------------------------------------------------+

References
==========

  * O. Debarre, A. Iliev, and L. Manivel, Special prime Fano fourfolds of
    degree 10 and index 2, available at arXiv:1302.1398 (see
    https://arxiv.org/abs/1302.1398 ) (2014).
  * G. Staglianò, On some families of Gushel-Mukai fourfolds, available at
    arXiv:2002.07026 (see https://arxiv.org/abs/2002.07026 ) (2020).

See also
========

  * specialGushelMukaiFourfold(EmbeddedProjectiveVariety)
    -- random
    special Gushel-Mukai fourfold
  * GMtables -- make examples of reducible subschemes of P^5

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

  * "specialGushelMukaiFourfold(String)"
  * specialGushelMukaiFourfold(String,Ring)
    -- random special
    Gushel-Mukai fourfold of a given type

surface -- get the special surface contained in the fourfold
************************************************************

Synopsis
========

  * Usage:
        surface X
  * Inputs:
      * X, a Hodge-special fourfold,
  * Outputs:
      * an embedded projective variety (MultiprojectiveVarieties),
        the special
        surface contained in the fourfold X

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

+-----------------------------------------------------------------------------+
|i1 : X = specialFourfold "quintic del Pezzo surface";                        |
|                                                                             |
|o1 : ProjectiveVariety, GM fourfold containing a surface of degree 5 and     |
|-----------------------------------------------------------------------------|
|sectional genus 1                                                            |
+-----------------------------------------------------------------------------+
|i2 : V = ambientFivefold X;                                                  |
|                                                                             |
|o2 : ProjectiveVariety, 5-dimensional subvariety of PP^8                     |
+-----------------------------------------------------------------------------+
|i3 : S = surface X;                                                          |
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^8 (subvariety of codimension 3 in V)   |
+-----------------------------------------------------------------------------+
|i4 : assert isSubset(S,X)                                                    |
+-----------------------------------------------------------------------------+

See also
========

  * surface(List) -- get a rational surface

Ways to use surface :
=====================

  * "surface(HodgeSpecialFourfold)"
  * surface(List) -- get a rational surface
  * "surface(VisibleList,Option)" -- see surface(List),
    -- get a rational surface
  * "surface(VisibleList,Option,Option)" -- see surface(List),
    -- get a rational surface
  * "surface(VisibleList,Ring)" -- see surface(List),
    -- get a rational surface
  * "surface(VisibleList,Ring,Option)" -- see surface(List),
    -- get a rational surface
  * "surface(VisibleList,Ring,Option,Option)" -- see surface(List),
    -- get a rational surface
  * surface(MultiprojectiveVariety,MultiprojectiveVariety)
    -- make a
    Hodge-special surface

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

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

surface(List) -- get a rational surface
***************************************

Synopsis
========

  * Function: surface,
  * Usage:
        surface {a,i,j,k,...}
        surface({a,i,j,k,...),K)
        surface({a,i,j,k,...},K,NumNodes=>n,ambient=>m)
  * Inputs:
      * a list (Macaulay2Doc), a list $\{a,i,j,k,\ldots\}$ of
        nonnegative integers
  * Outputs:
      * an embedded projective variety (MultiprojectiveVarieties),
        the image of the
        rational map defined by the linear system of curves of degree $a$ in
        $\mathbb{P}_{K}^2$ having $i$ random base points of multiplicity 1, $j$
        random base points of multiplicity 2, $k$ random base points of
        multiplicity 3, and so on until the last integer in the given list.

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

In the example below, we take the image of the rational map defined by the
linear system of septic plane curves with 3 random simple base points and 9
random double points.

+-----------------------------------------------------------------------------+
|i1 : S = surface {7,3,9};                                                    |
|                                                                             |
|o1 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i2 : coefficientRing S                                                       |
|                                                                             |
|       ZZ                                                                    |
|o2 = -----                                                                   |
|     65521                                                                   |
|                                                                             |
|o2 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i3 : T = surface({7,3,9},ZZ/33331);                                          |
|                                                                             |
|o3 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i4 : X = specialCubicFourfold T;                                             |
|                                                                             |
|o4 : ProjectiveVariety, cubic fourfold containing a surface of degree 10 and |
|-----------------------------------------------------------------------------|
|sectional genus 6                                                            |
+-----------------------------------------------------------------------------+
|i5 : coefficientRing X                                                       |
|                                                                             |
|       ZZ                                                                    |
|o5 = -----                                                                   |
|     33331                                                                   |
|                                                                             |
|o5 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i6 : describe X                                                              |
|                                                                             |
|o6 = Special cubic fourfold of discriminant 26                               |
|     containing a (smooth) surface of degree 10 and sectional genus 6        |
|     cut out by 10 hypersurfaces of degree 3                                 |
+-----------------------------------------------------------------------------+

See also
========

  * rationalMap(PolynomialRing,List) (Cremona)
    -- rational map defined by
    the linear system of hypersurfaces passing through random points with
    multiplicity
  * specialGushelMukaiFourfold(Array,Array),
    --
    construct GM fourfolds by gluing cubic or quartic scrolls to surfaces in
    PP^6

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

  * surface(List) -- get a rational surface
  * "surface(VisibleList,Option)"
  * "surface(VisibleList,Option,Option)"
  * "surface(VisibleList,Ring)"
  * "surface(VisibleList,Ring,Option)"
  * "surface(VisibleList,Ring,Option,Option)"

surface(MultiprojectiveVariety,MultiprojectiveVariety) -- make a Hodge-special surface
**************************************************************************************

Synopsis
========

  * Function: surface,
  * Usage:
        surface(C,S)
  * Inputs:
      * C, a multi-projective variety (MultiprojectiveVarieties),
        an irreducible curve
      * S, a multi-projective variety (MultiprojectiveVarieties),
        a smooth surface $S$
        containing the curve $C$
  * Outputs:
      * the Hodge special surface corresponding to the pair $(C,S)$

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

The curve $C$ can be recovered using the function curve.

+--------------------------------------------------------------------------+
|i1 : K = ZZ/65521;                                                        |
+--------------------------------------------------------------------------+
|i2 : C = random PP_K^(1,3); -- random twisted cubic in P^3                |
|                                                                          |
|o2 : ProjectiveVariety, curve in PP^3                                     |
+--------------------------------------------------------------------------+
|i3 : j = parametrize PP_K(1,1,1,4);                                       |
|                                                                          |
|o3 : WeightedRationalMap (birational map from PP^3 to PP(1,1,1,4))        |
+--------------------------------------------------------------------------+
|i4 : C = (rationalMap(ambient C,source j) * j) C;                         |
|                                                                          |
|o4 : ProjectiveVariety, curve in PP(1,1,1,4)                              |
+--------------------------------------------------------------------------+
|i5 : describe C                                                           |
|                                                                          |
|o5 = ambient:.............. PP(1,1,1,4)                                   |
|     dim:.................. 1                                             |
|     codim:................ 2                                             |
|     degree:............... 12                                            |
|     generators:........... 3^1 5^2 8^1                                   |
|     purity:............... true                                          |
|     dim sing. l.:......... -1                                            |
+--------------------------------------------------------------------------+
|i6 : S = random(8,C);                                                     |
|                                                                          |
|o6 : ProjectiveVariety, surface in PP(1,1,1,4)                            |
+--------------------------------------------------------------------------+
|i7 : describe S                                                           |
|                                                                          |
|o7 = ambient:.............. PP(1,1,1,4)                                   |
|     dim:.................. 2                                             |
|     codim:................ 1                                             |
|     degree:............... 8                                             |
|     generators:........... 8^1                                           |
|     purity:............... true                                          |
|     dim sing. l.:......... -1                                            |
+--------------------------------------------------------------------------+
|i8 : S = surface(C,S);                                                    |
|                                                                          |
|o8 : ProjectiveVariety, octic surface in PP(1,1,1,4) with rank 2 lattice  |
|     defined by the intersection matrix | 2 3  | (det: -19)               |
|                                        | 3 -5 |                          |
+--------------------------------------------------------------------------+
|i9 : discriminant S                                                       |
|                                                                          |
|o9 = -19                                                                  |
+--------------------------------------------------------------------------+
|i10 : parameterCount(S,Verbose=>true)                                     |
|C: curve in PP(1,1,1,4) cut out by 4 hypersurfaces of degrees 3^1 5^2 8^1 |
|S: surface in PP(1,1,1,4) defined by a form of degree 8                   |
|ambient: P = PP(1,1,1,4)                                                  |
|h^1(N_{C,P}) = 1                                                          |
|--warning: condition h^1(N_{C,P}) == 0 not satisfied                      |
|h^0(N_{C,P}) = 21                                                         |
|h^0(I_{C,P}(8)) = 36                                                      |
|h^0(N_{C,P}) + 35 = 56                                                    |
|h^0(N_{C,S}) = 0                                                          |
|dim{[S] : C ⊂ S ⊂ P} >= 56                                                |
|dim P(H^0(O_P(8))) = 60                                                   |
|codim{[S] : C ⊂ S ⊂ P} <= 4                                               |
|                                                                          |
|o10 = (4, (36, 21, 0))                                                    |
|                                                                          |
|o10 : Sequence                                                            |
+--------------------------------------------------------------------------+
|i11 : f := map(S,1,0)                                                     |
|                                                                          |
|o11 = multi-rational map consisting of one single rational map            |
|      source variety: surface in PP(1,1,1,4) defined by a form of degree 8|
|      target variety: PP^2                                                |
|                                                                          |
|o11 : WeightedRationalMap (rational map from S to PP^2)                   |
+--------------------------------------------------------------------------+
|i12 : f = quadricFibration f                                              |
|                                                                          |
|o12 = multi-rational map consisting of one single rational map            |
|      source variety: surface in PP(1,1,1,4) defined by a form of degree 8|
|      target variety: PP^2                                                |
|                                                                          |
|o12 : QuadricFibration (rational map from S to PP^2)                      |
+--------------------------------------------------------------------------+
|i13 : discriminant f                                                      |
|-- starting computation of the generic fiber...                           |
|-- computation of the generic fiber successfully completed.               |
|-- verifying the computation of the discriminant locus                    |
|                                                                          |
|o13 = curve in PP^2 defined by a form of degree 8                         |
|                                                                          |
|o13 : ProjectiveVariety, curve in PP^2                                    |
+--------------------------------------------------------------------------+

Caveat
======

This feature is currently under development.

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

  * surface(MultiprojectiveVariety,MultiprojectiveVariety)
    -- make a
    Hodge-special surface

toExternalString(HodgeSpecialFourfold) -- convert to a readable string
**********************************************************************

Synopsis
========

  * Function: toExternalString (Macaulay2Doc),
  * Usage:
        toExternalString X
  * Inputs:
      * X, a Hodge-special fourfold,
  * Outputs:
      * a string (Macaulay2Doc), a string representation of X,
        which can be used, in conjunction with value (Macaulay2Doc),
        to read the object back into the program later

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

Some of the internal data of the input X are included in the returned string.

+-------------------------------------------------------------------+
|i1 : describe (X = specialFourfold "tau-quadric")                  |
|                                                                   |
|o1 = Special Gushel-Mukai fourfold of discriminant 10(')           |
|     containing a surface in PP^8 of degree 2 and sectional genus 0|
|     cut out by 6 hypersurfaces of degrees (1,1,1,1,1,2)           |
|     and with class in G(1,4) given by s_(3,1)+s_(2,2)             |
|     Type: ordinary                                                |
|     (case 1 of Table 1 in arXiv:2002.07026)                       |
+-------------------------------------------------------------------+
|i2 : str = toExternalString X;                                     |
+-------------------------------------------------------------------+
|i3 : describe (value str)                                          |
|                                                                   |
|o3 = Special Gushel-Mukai fourfold of discriminant 10(')           |
|     containing a surface in PP^8 of degree 2 and sectional genus 0|
|     cut out by 6 hypersurfaces of degrees (1,1,1,1,1,2)           |
|     and with class in G(1,4) given by s_(3,1)+s_(2,2)             |
|     Type: ordinary                                                |
|     (case 1 of Table 1 in arXiv:2002.07026)                       |
+-------------------------------------------------------------------+

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

  * toExternalString(HodgeSpecialFourfold)
    -- convert to a readable string

toGrass -- Gushel morphism from a GM fourfold to GG(1,4)
********************************************************

Synopsis
========

  * Usage:
        toGrass X
  * Inputs:
      * X, a special Gushel-Mukai fourfold,
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        a linear morphism from $X$
        into the Grassmannian (MultiprojectiveVarieties),
        $\mathbb{G}(1,4)\subset\mathbb{P}^9$, Plücker embedded, which is an
        embedding when $X$ is of ordinary type

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

+-----------------------------------------------------------------------------+
|i1 : x = gens ring PP_(ZZ/33331)^8;                                          |
+-----------------------------------------------------------------------------+
|i2 : X = specialGushelMukaiFourfold(ideal(x_6-x_7, x_5, x_3-x_4, x_1, x_0    |
|                                                                             |
|o2 : ProjectiveVariety, GM fourfold containing a surface of degree 2 and     |
|-----------------------------------------------------------------------------|
|-x_4, x_2*x_7-x_4*x_8), ideal(x_4*x_6-x_3*x_7+x_1*x_8,                       |
|                                                                             |
|sectional genus 0                                                            |
|-----------------------------------------------------------------------------|
|x_4*x_5-x_2*x_7+x_0*x_8, x_3*x_5-x_2*x_6+x_0*x_8+x_1*x_8-x_5*x_8,            |
|-----------------------------------------------------------------------------|
|x_1*x_5-x_0*x_6+x_0*x_7+x_1*x_7-x_5*x_7,                                     |
|-----------------------------------------------------------------------------|
|x_1*x_2-x_0*x_3+x_0*x_4+x_1*x_4-x_2*x_7+x_0*x_8,                             |
|-----------------------------------------------------------------------------|
|x_0^2+x_0*x_1+x_1^2+x_0*x_2+2*x_0*x_3+x_1*x_3+x_2*x_3+x_3^2-x_0*x_4-x_1*x_4-2|
|-----------------------------------------------------------------------------|
|*x_2*x_4-x_3*x_4-2*x_4^2+x_0*x_5+x_2*x_5+x_5^2+2*x_0*x_6+x_1*x_6+2*x_2*x_6+x_|
|-----------------------------------------------------------------------------|
|3*x_6+x_5*x_6+x_6^2-3*x_4*x_7+2*x_5*x_7-x_7^2+x_1*x_8+x_3*x_8-3*x_4*x_8+2*x_5|
|-----------------------------------------------------------------------------|
|*x_8+x_6*x_8-x_7*x_8));                                                      |
+-----------------------------------------------------------------------------+
|i3 : time toGrass X                                                          |
|warning: clearing value of symbol x to allow access to subscripted           |
|       : debug with expression   debug 9868   or with command line           |
|     -- used 2.17048 seconds                                                 |
|                                                                             |
|o3 = multi-rational map consisting of one single rational map                |
|     source variety: 4-dimensional subvariety of PP^8 cut out by 6           |
|     target variety: GG(1,4) ⊂ PP^9                                          |
|                                                                             |
|o3 : MultirationalMap (rational map from X to GG(1,4))                       |
|-----------------------------------------------------------------------------|
|variables based on it                                                        |
|option   --debug 9868                                                        |
|                                                                             |
|                                                                             |
|                                                                             |
|hypersurfaces of degree 2                                                    |
+-----------------------------------------------------------------------------+
|i4 : show oo                                                                 |
|                                                                             |
|o4 = -- multi-rational map --                                                |
|                                  ZZ                                         |
|     source: subvariety of Proj(-----[x , x , x , x , x , x , x , x ,        |
|                                33331  0   1   2   3   4   5   6   7         |
|             {                                                               |
|              x x  - x x  + x x ,                                            |
|               4 6    3 7    1 8                                             |
|                                                                             |
|              x x  - x x  + x x ,                                            |
|               4 5    2 7    0 8                                             |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x ,                              |
|               3 5    2 6    0 8    1 8    5 8                               |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x ,                              |
|               1 5    0 6    0 7    1 7    5 7                               |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x  + x x ,                       |
|               1 2    0 3    0 4    1 4    2 7    0 8                        |
|                                                                             |
|               2           2                                 2               |
|              x  + x x  + x  + x x  + 2x x  + x x  + x x  + x  - x x         |
|               0    0 1    1    0 2     0 3    1 3    2 3    3    0 4        |
|             }                                                               |
|                                  ZZ                                         |
|     target: subvariety of Proj(-----[x   , x   , x   , x   , x   , x        |
|                                33331  0,1   0,2   1,2   0,3   1,3           |
|             {                                                               |
|              x   x    - x   x    + x   x   ,                                |
|               2,3 1,4    1,3 2,4    1,2 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               2,3 0,4    0,3 2,4    0,2 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               1,3 0,4    0,3 1,4    0,1 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               1,2 0,4    0,2 1,4    0,1 2,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x                                    |
|               1,2 0,3    0,2 1,3    0,1 2,3                                 |
|             }                                                               |
|     -- rational map 1/1 --                                                  |
|     map 1/1, one of its representatives:                                    |
|     {                                                                       |
|      5418x  - 821x  + 5588x  - 3585x  - 1758x  - 15576x  + 9147x  -         |
|           0       1        2        3        4         5        6           |
|                                                                             |
|      11632x  - 4732x  - 10523x  - 11526x  - 1991x  - 1831x  - 9701x         |
|            0        1         2         3        4        5        6        |
|                                                                             |
|      16371x  - 7244x  + 4935x  + 15111x  + 3749x  - 12977x  + 15511x        |
|            0        1        2         3        4         5                 |
|                                                                             |
|      - 13960x  - 3219x  + 8239x  - 10597x  + 7747x  + 273x  - 6285x         |
|              0        1        2         3        4       5        6        |
|                                                                             |
|      - 12638x  - 12017x  - 2651x  + 7012x  - 9505x  + 3559x  - 2170x        |
|              0         1        2        3        4        5                |
|                                                                             |
|      - 4096x  + 10456x  - 2284x  + 11208x  + 5756x  - 6263x  + 599x         |
|             0         1        2         3        4        5       6        |
|                                                                             |
|      5896x  + 11711x  - 9239x  + 9726x  + 9682x  + 2295x  - 6875x  -        |
|           0         1        2        3        4        5        6          |
|                                                                             |
|      - 8687x  + 14564x  + 3651x  - 6141x  - 7924x  + 3227x  - 5479x         |
|             0         1        2        3        4        5        6        |
|                                                                             |
|      89x  + 11710x  + 1284x  - 12079x  + 11673x  - 2256x  + 12732x          |
|         0         1        2         3         4        5         6         |
|                                                                             |
|      - 25x  + 12923x  + 1000x  + 871x  + 15902x  - 3782x  - 7479x  -        |
|           0         1        2       3         4        5        6          |
|     }                                                                       |
|-----------------------------------------------------------------------------|
| x ]) defined by                                                             |
|  8                                                                          |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                           2                  2                              |
| - x x  - 2x x  - x x  - 2x  + x x  + x x  + x  + 2x x  + x x  + 2x x  + x x |
|    1 4     2 4    3 4     4    0 5    2 5    5     0 6    1 6     2 6    3 6|
|                                                                             |
|                                                                             |
|   , x   , x   , x   , x   ]) defined by                                     |
|2,3   0,4   1,4   2,4   3,4                                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|14993x  - 4736x ,                                                            |
|      7        8                                                             |
|                                                                             |
| + 12320x  - 2015x ,                                                         |
|         7        8                                                          |
|                                                                             |
|  + 7287x  + 6751x ,                                                         |
|6        7        8                                                          |
|                                                                             |
| + 2934x  - 4471x ,                                                          |
|        7        8                                                           |
|                                                                             |
|  - 59x  - 265x ,                                                            |
|6      7       8                                                             |
|                                                                             |
| + 7817x  - 6486x ,                                                          |
|        7        8                                                           |
|                                                                             |
| 16024x  - 7246x ,                                                           |
|       7        8                                                            |
|                                                                             |
| + 13427x  + 11982x ,                                                        |
|         7         8                                                         |
|                                                                             |
|- 7459x  - 5231x ,                                                           |
|       7        8                                                            |
|                                                                             |
| 5250x  + 11717x                                                             |
|      7         8                                                            |
|-----------------------------------------------------------------------------|
|          2                    2                                             |
|+ x x  + x  - 3x x  + 2x x  - x  + x x  + x x  - 3x x  + 2x x  + x x  - x x  |
|   5 6    6     4 7     5 7    7    1 8    3 8     4 8     5 8    6 8    7 8 |
+-----------------------------------------------------------------------------+

See also
========

  * toGrass(EmbeddedProjectiveVariety)
    -- embedding of an ordinary
    Gushel-Mukai fourfold or a del Pezzo variety into GG(1,4)
  * EmbeddedProjectiveVariety ===> EmbeddedProjectiveVariety (MultiprojectiveVarieties)
    -- try to find an isomorphism between two
    projective varieties

Ways to use toGrass :
=====================

  * "toGrass(SpecialGushelMukaiFourfold)"
  * toGrass(EmbeddedProjectiveVariety)
    -- embedding of an ordinary
    Gushel-Mukai fourfold or a del Pezzo variety into GG(1,4)

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

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

toGrass(EmbeddedProjectiveVariety) -- embedding of an ordinary Gushel-Mukai fourfold or a del Pezzo variety into GG(1,4)
************************************************************************************************************************

Synopsis
========

  * Function: toGrass,
  * Usage:
        toGrass X
  * Inputs:
      * X, an embedded projective variety (MultiprojectiveVarieties),
        an ordinary
        Gushel-Mukai fourfold, or a del Pezzo variety of dimension at least 4
        (e.g., a sixfold projectively equivalent to
        $\mathbb{G}(1,4)\subset\mathbb{P}^9$)
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        an embedding of $X$ into
        the Grassmannian (MultiprojectiveVarieties),
        $\mathbb{G}(1,4)\subset\mathbb{P}^9$, Plücker embedded

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

+-----------------------------------------------------------------------------+
|i1 : x = gens ring PP_(ZZ/33331)^8;                                          |
+-----------------------------------------------------------------------------+
|i2 : X = projectiveVariety ideal(x_4*x_6-x_3*x_7+x_1*x_8,                    |
|                                                                             |
|o2 : ProjectiveVariety, 5-dimensional subvariety of PP^8                     |
|-----------------------------------------------------------------------------|
|x_4*x_5-x_2*x_7+x_0*x_8, x_3*x_5-x_2*x_6+x_0*x_8+x_1*x_8-x_5*x_8,            |
|-----------------------------------------------------------------------------|
|x_1*x_5-x_0*x_6+x_0*x_7+x_1*x_7-x_5*x_7,                                     |
|-----------------------------------------------------------------------------|
|x_1*x_2-x_0*x_3+x_0*x_4+x_1*x_4-x_2*x_7+x_0*x_8);                            |
+-----------------------------------------------------------------------------+
|i3 : time toGrass X                                                          |
|warning: clearing value of symbol x to allow access to subscripted           |
|       : debug with expression   debug 9868   or with command line           |
|     -- used 2.28422 seconds                                                 |
|                                                                             |
|o3 = multi-rational map consisting of one single rational map                |
|     source variety: 5-dimensional subvariety of PP^8 cut out by 5           |
|     target variety: GG(1,4) ⊂ PP^9                                          |
|                                                                             |
|o3 : MultirationalMap (rational map from X to GG(1,4))                       |
|-----------------------------------------------------------------------------|
|variables based on it                                                        |
|option   --debug 9868                                                        |
|                                                                             |
|                                                                             |
|                                                                             |
|hypersurfaces of degree 2                                                    |
+-----------------------------------------------------------------------------+
|i4 : show oo                                                                 |
|                                                                             |
|o4 = -- multi-rational map --                                                |
|                                  ZZ                                         |
|     source: subvariety of Proj(-----[x , x , x , x , x , x , x , x ,        |
|                                33331  0   1   2   3   4   5   6   7         |
|             {                                                               |
|              x x  - x x  + x x ,                                            |
|               4 6    3 7    1 8                                             |
|                                                                             |
|              x x  - x x  + x x ,                                            |
|               4 5    2 7    0 8                                             |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x ,                              |
|               3 5    2 6    0 8    1 8    5 8                               |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x ,                              |
|               1 5    0 6    0 7    1 7    5 7                               |
|                                                                             |
|              x x  - x x  + x x  + x x  - x x  + x x                         |
|               1 2    0 3    0 4    1 4    2 7    0 8                        |
|             }                                                               |
|                                  ZZ                                         |
|     target: subvariety of Proj(-----[x   , x   , x   , x   , x   , x        |
|                                33331  0,1   0,2   1,2   0,3   1,3           |
|             {                                                               |
|              x   x    - x   x    + x   x   ,                                |
|               2,3 1,4    1,3 2,4    1,2 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               2,3 0,4    0,3 2,4    0,2 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               1,3 0,4    0,3 1,4    0,1 3,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x   ,                                |
|               1,2 0,4    0,2 1,4    0,1 2,4                                 |
|                                                                             |
|              x   x    - x   x    + x   x                                    |
|               1,2 0,3    0,2 1,3    0,1 2,3                                 |
|             }                                                               |
|     -- rational map 1/1 --                                                  |
|     map 1/1, one of its representatives:                                    |
|     {                                                                       |
|      5418x  - 821x  + 5588x  - 3585x  - 1758x  - 15576x  + 9147x  -         |
|           0       1        2        3        4         5        6           |
|                                                                             |
|      11632x  - 4732x  - 10523x  - 11526x  - 1991x  - 1831x  - 9701x         |
|            0        1         2         3        4        5        6        |
|                                                                             |
|      16371x  - 7244x  + 4935x  + 15111x  + 3749x  - 12977x  + 15511x        |
|            0        1        2         3        4         5                 |
|                                                                             |
|      - 13960x  - 3219x  + 8239x  - 10597x  + 7747x  + 273x  - 6285x         |
|              0        1        2         3        4       5        6        |
|                                                                             |
|      - 12638x  - 12017x  - 2651x  + 7012x  - 9505x  + 3559x  - 2170x        |
|              0         1        2        3        4        5                |
|                                                                             |
|      - 4096x  + 10456x  - 2284x  + 11208x  + 5756x  - 6263x  + 599x         |
|             0         1        2         3        4        5       6        |
|                                                                             |
|      5896x  + 11711x  - 9239x  + 9726x  + 9682x  + 2295x  - 6875x  -        |
|           0         1        2        3        4        5        6          |
|                                                                             |
|      - 8687x  + 14564x  + 3651x  - 6141x  - 7924x  + 3227x  - 5479x         |
|             0         1        2        3        4        5        6        |
|                                                                             |
|      89x  + 11710x  + 1284x  - 12079x  + 11673x  - 2256x  + 12732x          |
|         0         1        2         3         4        5         6         |
|                                                                             |
|      - 25x  + 12923x  + 1000x  + 871x  + 15902x  - 3782x  - 7479x  -        |
|           0         1        2       3         4        5        6          |
|     }                                                                       |
|-----------------------------------------------------------------------------|
| x ]) defined by                                                             |
|  8                                                                          |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|   , x   , x   , x   , x   ]) defined by                                     |
|2,3   0,4   1,4   2,4   3,4                                                  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|14993x  - 4736x ,                                                            |
|      7        8                                                             |
|                                                                             |
| + 12320x  - 2015x ,                                                         |
|         7        8                                                          |
|                                                                             |
|  + 7287x  + 6751x ,                                                         |
|6        7        8                                                          |
|                                                                             |
| + 2934x  - 4471x ,                                                          |
|        7        8                                                           |
|                                                                             |
|  - 59x  - 265x ,                                                            |
|6      7       8                                                             |
|                                                                             |
| + 7817x  - 6486x ,                                                          |
|        7        8                                                           |
|                                                                             |
| 16024x  - 7246x ,                                                           |
|       7        8                                                            |
|                                                                             |
| + 13427x  + 11982x ,                                                        |
|         7         8                                                         |
|                                                                             |
|- 7459x  - 5231x ,                                                           |
|       7        8                                                            |
|                                                                             |
| 5250x  + 11717x                                                             |
|      7         8                                                            |
+-----------------------------------------------------------------------------+

See also
========

  * toGrass(SpecialGushelMukaiFourfold) -- Gushel morphism from
    a GM fourfold to GG(1,4)
  * EmbeddedProjectiveVariety ===> EmbeddedProjectiveVariety (MultiprojectiveVarieties)
    -- try to find an isomorphism between two
    projective varieties

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

  * toGrass(EmbeddedProjectiveVariety)
    -- embedding of an ordinary
    Gushel-Mukai fourfold or a del Pezzo variety into GG(1,4)

trisecantFlop -- examples of trisecant flops
********************************************

Synopsis
========

  * Usage:
        trisecantFlop i
  * Inputs:
      * i, an integer (Macaulay2Doc), an integer between 0 and 17
  * Optional inputs (Macaulay2Doc),:
      * Verbose, => ..., default value false, request verbose
        feedback
  * Outputs:
      * the i-th example of birational map $X\dashrightarrow W$ in accordance
        to the Table 1 in the paper Trisecant Flops, their associated K3
        surfaces and the rationality of some Fano fourfolds (see
        https://arxiv.org/abs/1909.01263 ).

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

This function requires the package TrisecantFlops (see
https://github.com/giovannistagliano/TrisecantFlops ). If not present the user
will be asked to automatically install the package.

See also
========

  * specialFourfold(String,ZZ) -- load
    a prebuilt example of fourfold

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

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

unirationalParametrization -- unirational parametrization
*********************************************************

Synopsis
========

  * Usage:
        unirationalParametrization X
  * Inputs:
      * X, a special cubic fourfold, or a
        special Gushel-Mukai fourfold,
  * Outputs:
      * a multi-rational map (MultiprojectiveVarieties),
        a rational map of degree 2
        from $\mathbb{P}^4$ to $X$

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

The degree of the forms defining the returned map is 10 in the case of cubic
fourfolds, and 26 in the case of GM fourfolds.

+-----------------------------------------------------------------------------+
|i1 : K = ZZ/10000019; S = PP_K^(2,2); -- Veronese surface;                   |
|                                                                             |
|o2 : ProjectiveVariety, surface in PP^5                                      |
+-----------------------------------------------------------------------------+
|i3 : X = specialCubicFourfold S;                                             |
|                                                                             |
|o3 : ProjectiveVariety, cubic fourfold containing a surface of degree 4 and  |
|-----------------------------------------------------------------------------|
|sectional genus 0                                                            |
+-----------------------------------------------------------------------------+
|i4 : time f = unirationalParametrization X;                                  |
|     -- used 0.287292 seconds                                                |
|                                                                             |
|o4 : MultirationalMap (rational map from PP^4 to X)                          |
+-----------------------------------------------------------------------------+
|i5 : degreeSequence f                                                        |
|                                                                             |
|o5 = {[10]}                                                                  |
|                                                                             |
|o5 : List                                                                    |
+-----------------------------------------------------------------------------+
|i6 : degree(f,Strategy=>"random point")                                      |
|                                                                             |
|o6 = 2                                                                       |
+-----------------------------------------------------------------------------+

See also
========

  * parametrize(HodgeSpecialFourfold)
    -- rational parametrization
  * parametrize(MultiprojectiveVariety) (MultiprojectiveVarieties)
    -- try
    to get a parametrization of a multi-projective variety

Ways to use unirationalParametrization :
========================================

  * "unirationalParametrization(HodgeSpecialFourfold)"
  * "unirationalParametrization(SpecialCubicFourfold)"
  * "unirationalParametrization(SpecialCubicFourfold,EmbeddedProjectiveVariety
    )"
  * "unirationalParametrization(SpecialGushelMukaiFourfold)"

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

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

Verbose -- request verbose feedback
***********************************

Functions with optional argument named Verbose :
================================================

  * "check(...,Verbose=>...)" -- see check (Macaulay2Doc), --
    perform tests of a package
  * "checkDegrees(...,Verbose=>...)" -- see checkDegrees (Isomorphism),
    -- compares the degrees of generators of two
    modules
  * "copyDirectory(...,Verbose=>...)" -- see
    copyDirectory(String,String) (Macaulay2Doc),
  * "copyFile(...,Verbose=>...)" -- see copyFile(String,String) (Macaulay2Doc),
  * "findProgram(...,Verbose=>...)" -- see findProgram (Macaulay2Doc),
    -- load external program
  * "installPackage(...,Verbose=>...)" -- see installPackage (Macaulay2Doc),
    -- load and install a package and its
    documentation
  * "approximateInverseMap(...,Verbose=>...)" -- see
    inverseMap(...,Verbose=>...) (Cremona),
  * "ChernSchwartzMacPherson(...,Verbose=>...)" -- see
    inverseMap(...,Verbose=>...) (Cremona),
  * "degreeMap(...,Verbose=>...)" -- see inverseMap(...,Verbose=>...) (Cremona),
  * "EulerCharacteristic(...,Verbose=>...)" -- see
    inverseMap(...,Verbose=>...) (Cremona),
  * inverseMap(...,Verbose=>...) (Cremona)
  * "isBirational(...,Verbose=>...)" -- see inverseMap(...,Verbose=>...) (Cremona),
  * "isDominant(...,Verbose=>...)" -- see inverseMap(...,Verbose=>...) (Cremona),
  * "projectiveDegrees(...,Verbose=>...)" -- see
    inverseMap(...,Verbose=>...) (Cremona),
  * "SegreClass(...,Verbose=>...)" -- see inverseMap(...,Verbose=>...) (Cremona),
  * "isIsomorphic(...,Verbose=>...)" -- see isIsomorphic (Isomorphism),
    -- Probabilistic test for isomorphism of modules
  * "moveFile(...,Verbose=>...)" -- see moveFile(String,String) (Macaulay2Doc),
  * "runProgram(...,Verbose=>...)" -- see runProgram (Macaulay2Doc),
    -- run an external program
  * "symlinkDirectory(...,Verbose=>...)" -- see
    symlinkDirectory(String,String) (Macaulay2Doc),
    -- make symbolic links
    for all files in a directory tree
  * "associatedCastelnuovoSurface(...,Verbose=>...)"
  * "associatedK3surface(...,Verbose=>...)"
  * "detectCongruence(...,Verbose=>...)"
  * "mirrorFourfold(...,Verbose=>...)"
  * "parameterCount(...,Verbose=>...)"
  * "specialCubicFourfold(...,Verbose=>...)"
  * "specialFourfold(...,Verbose=>...)"
  * "specialGushelMukaiFourfold(...,Verbose=>...)"
  * "trisecantFlop(...,Verbose=>...)"

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

The object Verbose (Macaulay2Doc), is a symbol (Macaulay2Doc).