This is WeierstrassSemigroups.info, produced by Macaulay2, version 1.26.06

WeierstrassSemigroups -- Compute smoothing families for Weierstrass semigroups
******************************************************************************

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

This package contains methods to compute one parameter, positively graded
smoothing families over QQ for certain numerical semigroup rings.  By Pinkham's
Theorem a semigroup is a Weierstrass semigroup if and only if the semigroup
ring has a graded smoothing in negative T^1 directions.

Deformations
============

  * makeUnfolding -- Makes the universal homogeneous
    unfolding of an ideal with positive degree parameters
  * flatteningRelations -- Compute the flattening
    relations of an unfolding
  * getFlatFamily -- Compute the flat family depending on
    a subset of parameters of the universal unfolding
  * pruneFamily -- Present the family with fewest number of
    variables

Finding points
==============

  * solvingFlatteningRelations -- Solving
    the flatttening relations over QQ
  * clearDenominators -- Clear denominators
  * findPoint -- Find a kk-rational point in a variety
  * getRangeOfOneParameterFamily, --
    Compute the range of degrees of a one parameter family
  * getParameterFamily -- Compute the parametric
    family which uses the same terms as J
  * improveFamily -- Find a 1-parameter smoothing family
    with perhaps smaller number of terms and coefficients
  * getSmoothingFamilyWithVersalDeformation
    -- Get a smoothing family using
    versal deformations

Smoothness
==========

  * smoothnessWithReductions -- Check
    smoothness by using reductions to points
  * findCompleteIntersection -- Find complete
    intersection defined by some of the generators

Collecting
==========

  * collectByBound -- Collect 1-parameter families
    filtered by bound (or congruences or range)
  * collectWithVersalDeformations, --
    Collect 1-parameter families the using versal deformations
  * appendFamily -- Append a one-parameter smoothing
    family to a data file
  * HowToStartCollecting -- How to start
    collecting

Checking flatness and smoothness of a database of families
==========================================================

  * getListOfIdeals -- Read a list of ideals from a
    dataBase
  * checkFlatnessOfOneParameterFamilies
    -- Check flatness of 1-parameter
    famiiles
  * checkSmoothnessOfOneParameterFamilies
    -- Check smoothness of 1-parameter
    families

non-Weierstrass semigroups
==========================

  * give1683Format -- Does the semigroup ideal of L has
    a resolution with total betti numbers 1,6,8,3?
  * satisfiesDegreeCondition1 -- Does the
    semigroup ideal of L satisfies the degree condition for the 3rd
    respectively 2nd syzgy matrix?
  * satisfiesDegreeCondition2 -- Does the
    semigroup ideal of L satisfies the degree condition for the 3rd
    respectively 2nd syzgy matrix?
  * displaySyzygyMatrices -- Display the syzygy
    matrices
  * hilbertBurchConditions -- Check the depth
    conditions for the exactness of the 1,4,4,1 subcomplex of the 1,6,8,3
    subcomplex
  * depthCondition1 -- Check the depth conditions
    for the exactness of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex

References
==========

Pinkham, Henry C., Deformations of algebraic varieties with G_m action,
Ast{'e}risque textbf{20} (1974), pp 1 - 131, Soci{'e}t{'e} Math{'e}matique de
France (SMF), Paris

SeeAlso
=======

  * NumericalSemigroups -- Compute the Apery
    set and invariants of a numerical semigroup ring

Authors
=======

  * David Eisenbud (see http://eisenbud.github.io ) <de@berkeley.edu>
  * Frank-Olaf Schreyer (see https://www.math.uni-sb.de/ag/schreyer )
    <schreyer@math.uni-sb.de>

Version
=======

This documentation describes version 1.0 of WeierstrassSemigroups, released
June 4, 2026.

Citation
========

If you have used this package in your research, please cite it as follows:

+-----------------------------------------------------------------------------+
|@misc{WeierstrassSemigroupsSource,                                           |
|  title = {{WeierstrassSemigroups: Compute smoothing families for Weierstrass|
|  author = {David Eisenbud and Frank-Olaf Schreyer},                         |
|  howpublished = {A \emph{Macaulay2} package available at                    |
|    \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}} |
|}                                                                            |
|-----------------------------------------------------------------------------|
|semigroups. Version~1.0}},                                                   |
+-----------------------------------------------------------------------------+

Exports
=======

  * Functions and commands
      * appendFamily -- Append a one-parameter smoothing
        family to a data file
      * checkFlatnessOfOneParameterFamilies
        -- Check flatness of 1-parameter
        famiiles
      * checkSmoothnessOfOneParameterFamilies
        -- Check smoothness of
        1-parameter families
      * clearDenominators -- Clear denominators
      * collectByBound -- Collect 1-parameter families
        filtered by bound (or congruences or range)
      * "collectByCongruences" -- see collectByBound, --
        Collect 1-parameter families filtered by bound (or congruences or
        range)
      * "collectByRange" -- see collectByBound, --
        Collect 1-parameter families filtered by bound (or congruences or
        range)
      * collectWithVersalDeformations, --
        Collect 1-parameter families the using versal deformations
      * displaySyzygyMatrices -- Display the
        syzygy matrices
      * findCompleteIntersection -- Find
        complete intersection defined by some of the generators
      * findPoint -- Find a kk-rational point in a variety
      * flatteningRelations -- Compute the
        flattening relations of an unfolding
      * getFlatFamily -- Compute the flat family
        depending on a subset of parameters of the universal unfolding
      * "prepareInitialPositionList" -- see getFlatFamily,
        -- Compute the flat family depending on a subset of parameters of the
        universal unfolding
      * getFromDisk -- Read a file from the hard disk
      * getListOfIdeals -- Read a list of ideals from a
        dataBase
      * getOneParameterFamily -- Compute a one
        parameter smoothing family
      * getParameterFamily -- Compute the parametric
        family which uses the same terms as J
      * getRangeOfOneParameterFamily, --
        Compute the range of degrees of a one parameter family
      * getSmoothingFamily -- Get a smoothing family
        for the semigroup L
      * getSmoothingFamilyWithVersalDeformation
        -- Get a smoothing family
        using versal deformations
      * give1683Format -- Does the semigroup ideal of L
        has a resolution with total betti numbers 1,6,8,3?
      * "depthCondition1" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "hasExactSubcomplex" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "hilbertBurchConditions" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * hilbertBurchMatrices -- Check the depth
        conditions for the exactness of the 1,4,4,1 subcomplex of the 1,6,8,3
        subcomplex
      * improveFamily -- Find a 1-parameter smoothing
        family with perhaps smaller number of terms and coefficients
      * isSmoothingFamily -- Is the family a
        smoothing family?
      * makeRange -- Make a range of degrees for
        getSmoothingFamily
      * makeUnfolding -- Makes the universal homogeneous
        unfolding of an ideal with positive degree parameters
      * pruneFamily -- Present the family with fewest
        number of variables
      * restrictedUnfolding -- Compute a restricted
        unfolding
      * satisfiesDegreeCondition1 -- Does the
        semigroup ideal of L satisfies the degree condition for the 3rd
        respectively 2nd syzgy matrix?
      * "satisfiesDegreeCondition2" -- see satisfiesDegreeCondition1,
        -- Does the semigroup ideal of L satisfies
        the degree condition for the 3rd respectively 2nd syzgy matrix?
      * smoothnessWithReductions -- Check
        smoothness by using reductions to points
      * solvingFlatteningRelations, --
        Solving the flatttening relations over QQ
      * testBound -- Test whether b is bound for the
        semigroup L and compute a 1-parameter smoothing family if yes
      * "testCongruences" -- see testBound, -- Test whether b
        is bound for the semigroup L and compute a 1-parameter smoothing family
        if yes
      * "testRange" -- see testBound, -- Test whether b is
        bound for the semigroup L and compute a 1-parameter smoothing family if
        yes
      * toDoList -- Make a list of semigroups not previously
        known to be Weierstrass
  * Methods
      * "appendFamily(List,Ideal,String,String)" -- see appendFamily,
        -- Append a one-parameter smoothing family to a data file
      * "checkFlatnessOfOneParameterFamilies(List,String)" -- see
        checkFlatnessOfOneParameterFamilies,
        -- Check flatness of 1-parameter
        famiiles
      * "checkSmoothnessOfOneParameterFamilies(List,String)" -- see
        checkSmoothnessOfOneParameterFamilies,
        -- Check smoothness of
        1-parameter families
      * "clearDenominators(Matrix)" -- see clearDenominators,
        -- Clear denominators
      * "collectByBound(List,ZZ,String,String)" -- see collectByBound,
        -- Collect 1-parameter families filtered by bound (or
        congruences or range)
      * "collectByCongruences(List,List,String,String)" -- see
        collectByBound, -- Collect 1-parameter families
        filtered by bound (or congruences or range)
      * "collectByRange(List,List,String,String)" -- see collectByBound,
        -- Collect 1-parameter families filtered by bound (or
        congruences or range)
      * "collectWithVersalDeformations(List,ZZ,String,String)" -- see
        collectWithVersalDeformations, --
        Collect 1-parameter families the using versal deformations
      * "displaySyzygyMatrices(List)" -- see displaySyzygyMatrices,
        -- Display the syzygy matrices
      * "findCompleteIntersection(Ideal)" -- see
        findCompleteIntersection, -- Find complete
        intersection defined by some of the generators
      * "findPoint(Ideal)" -- see findPoint, -- Find a
        kk-rational point in a variety
      * "flatteningRelations(Ideal,Ring,Matrix)" -- see
        flatteningRelations, -- Compute the flattening
        relations of an unfolding
      * "getFlatFamily(Ideal,Ring,Matrix)" -- see getFlatFamily,
        -- Compute the flat family depending on a subset of
        parameters of the universal unfolding
      * "getFlatFamily(Ideal,Ring,Matrix,List)" -- see getFlatFamily,
        -- Compute the flat family depending on a subset of
        parameters of the universal unfolding
      * "prepareInitialPositionList(List,ZZ)" -- see getFlatFamily,
        -- Compute the flat family depending on a subset of
        parameters of the universal unfolding
      * "getFromDisk(String)" -- see getFromDisk, -- Read a
        file from the hard disk
      * "getListOfIdeals(List,String)" -- see getListOfIdeals,
        -- Read a list of ideals from a dataBase
      * "getOneParameterFamily(Ideal,Ideal,Matrix,ZZ)" -- see
        getOneParameterFamily, -- Compute a one
        parameter smoothing family
      * "getParameterFamily(Ideal)" -- see getParameterFamily,
        -- Compute the parametric family which uses the
        same terms as J
      * "getRangeOfOneParameterFamily(Ideal)" -- see
        getRangeOfOneParameterFamily, -- Compute
        the range of degrees of a one parameter family
      * "getSmoothingFamily(List,List)" -- see getSmoothingFamily,
        -- Get a smoothing family for the semigroup L
      * "getSmoothingFamily(List,ZZ)" -- see getSmoothingFamily,
        -- Get a smoothing family for the semigroup L
      * "getSmoothingFamilyWithVersalDeformation(List)" -- see
        getSmoothingFamilyWithVersalDeformation,
        -- Get a smoothing family
        using versal deformations
      * "give1683Format(List)" -- see give1683Format, --
        Does the semigroup ideal of L has a resolution with total betti numbers
        1,6,8,3?
      * "give1683Format(List,List,List,List)" -- see give1683Format,
        -- Does the semigroup ideal of L has a resolution with
        total betti numbers 1,6,8,3?
      * "give1683Format(ZZ,ZZ,ZZ,ZZ)" -- see give1683Format,
        -- Does the semigroup ideal of L has a resolution with
        total betti numbers 1,6,8,3?
      * "depthCondition1(List)" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "hasExactSubcomplex(List)" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "hilbertBurchConditions(List)" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "hilbertBurchMatrices(List)" -- see hilbertBurchMatrices,
        -- Check the depth conditions for the exactness
        of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
      * "improveFamily(Ideal)" -- see improveFamily, --
        Find a 1-parameter smoothing family with perhaps smaller number of
        terms and coefficients
      * "isSmoothingFamily(List,Ideal,Matrix,Ideal)" -- see
        isSmoothingFamily, -- Is the family a smoothing
        family?
      * "makeRange(List,List)" -- see makeRange, -- Make a
        range of degrees for getSmoothingFamily
      * "makeUnfolding(Ideal)" -- see makeUnfolding, --
        Makes the universal homogeneous unfolding of an ideal with positive
        degree parameters
      * "makeUnfolding(List)" -- see makeUnfolding, --
        Makes the universal homogeneous unfolding of an ideal with positive
        degree parameters
      * "pruneFamily(Ideal,Ideal,Matrix)" -- see pruneFamily,
        -- Present the family with fewest number of variables
      * "restrictedUnfolding(Ideal,List)" -- see restrictedUnfolding,
        -- Compute a restricted unfolding
      * "satisfiesDegreeCondition1(List)" -- see
        satisfiesDegreeCondition1, -- Does the
        semigroup ideal of L satisfies the degree condition for the 3rd
        respectively 2nd syzgy matrix?
      * "satisfiesDegreeCondition2(List)" -- see
        satisfiesDegreeCondition1, -- Does the
        semigroup ideal of L satisfies the degree condition for the 3rd
        respectively 2nd syzgy matrix?
      * "smoothnessWithReductions(Ideal)" -- see
        smoothnessWithReductions, -- Check smoothness
        by using reductions to points
      * "solvingFlatteningRelations(Ideal,Matrix,Ideal)" -- see
        solvingFlatteningRelations, -- Solving the
        flatttening relations over QQ
      * "testBound(List,ZZ)" -- see testBound, -- Test whether
        b is bound for the semigroup L and compute a 1-parameter smoothing
        family if yes
      * "testCongruences(List,List)" -- see testBound, -- Test
        whether b is bound for the semigroup L and compute a 1-parameter
        smoothing family if yes
      * "testRange(List,List)" -- see testBound, -- Test
        whether b is bound for the semigroup L and compute a 1-parameter
        smoothing family if yes
      * "toDoList(ZZ)" -- see toDoList, -- Make a list of
        semigroups not previously known to be Weierstrass
      * "toDoList(ZZ,ZZ)" -- see toDoList, -- Make a list of
        semigroups not previously known to be Weierstrass
  * Symbols
      * BaseField -- Option keys for various functions
      * Bound -- Option keys for various functions
      * CoeffBound -- Option keys for various functions
      * CoeffSize -- Option keys for various functions
      * HighestOrder1 -- Option keys for various
        functions
      * HowToStartCollecting -- How to start
        collecting

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

The object WeierstrassSemigroups, is a package (Macaulay2Doc),
defined in WeierstrassSemigroups.m2.

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1382:0.

appendFamily -- Append a one-parameter smoothing family to a data file
**********************************************************************

  * Usage:
        append(L,J,done,doneData)
  * Inputs:
      * L, a list (Macaulay2Doc), generators of a semigroup
      * J, an ideal (Macaulay2Doc), ideal of a one parameter
        smoothing
      * done, a string (Macaulay2Doc), name of a file of done
        examples
      * doneData, a string (Macaulay2Doc), name of the dataFile
        with name doneData.dbm

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

We append a one-parameter smoothing family to a given data file

+-----------------------------------------------------------------------------+
|i1 : L={5,7,9}                                                               |
|                                                                             |
|o1 = {5, 7, 9}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 8                                                                       |
+-----------------------------------------------------------------------------+
|i3 : X="fam8"                                                                |
|                                                                             |
|o3 = fam8                                                                    |
+-----------------------------------------------------------------------------+
|i4 : Xdbm="fam8.dbm"                                                         |
|                                                                             |
|o4 = fam8.dbm                                                                |
+-----------------------------------------------------------------------------+
|i5 : setRandomSeed("always successful");                                     |
| -- setting random seed to 11500776554390917551191162798934277               |
+-----------------------------------------------------------------------------+
|i6 : elapsedTime (smooth,J)=getSmoothingFamily(L,6,Verbose=>1)               |
|number of components = 1, codimension of components = {0}                    |
|semigroup = {5, 7, 9}                                                        |
| smoothing components numbers = {0}                                          |
| -- .843886s elapsed                                                         |
|                                                                             |
|                    2             7      9     14   5      2    2 7    2   8 |
|o6 = (true, ideal (x  - x x  - x z  - x z  - 2z  , x  - x x  - x z  - x x z  |
|                    2    0 4    2      0            0    2 4    4      0 2   |
|     ------------------------------------------------------------------------|
|            9    3 10        11        13    2 15      16      18      20    |
|     - x x z  - x z   - x x z   - x x z   - x z   - x z   - x z   - x z   -  |
|        2 4      0       0 4       0 2       0       4       2       0       |
|     ------------------------------------------------------------------------|
|      25   4      3     4 7    2   8     2 9    2   10        11        13   |
|     z  , x x  - x  - 2x z  - x x z  - 2x z  - x x z   - x x z   - x x z   + |
|           0 2    4     0      0 4       4      0 2       2 4       0 4      |
|     ------------------------------------------------------------------------|
|      2 17      22    27                                                     |
|     x z   - x z   - z  ))                                                   |
|      0       0                                                              |
|                                                                             |
|o6 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i7 : elapsedTime smoothnessWithReductions(J,Verbose=>1)                      |
|semigroup = {5, 7, 9}                                                        |
| -- .0206168s elapsed                                                        |
|                                                                             |
|o7 = true                                                                    |
+-----------------------------------------------------------------------------+
|i8 : assert(flatten drop(degrees ring J,-1)==L)                              |
+-----------------------------------------------------------------------------+
|i9 : "appendFamily(L,J,X,Xdbm)";                                             |
+-----------------------------------------------------------------------------+

Reading and writing to the disk does not work in the documentation. Hence we
give the command in quotes.

See also
========

  * getSmoothingFamily -- Get a smoothing family for
    the semigroup L
  * smoothnessWithReductions -- Check
    smoothness by using reductions to points

Ways to use appendFamily:
=========================

  * "appendFamily(List,Ideal,String,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2933:0.

BaseField -- Option keys for various functions
**********************************************

Functions with optional argument named BaseField:
=================================================

  * "checkSmoothnessOfOneParameterFamilies(...,BaseField=>...)" -- see
    checkSmoothnessOfOneParameterFamilies,
    -- Check smoothness of 1-parameter
    families
  * "collectWithVersalDeformations(...,BaseField=>...)" -- see
    collectWithVersalDeformations, -- Collect
    1-parameter families the using versal deformations
  * "getFlatFamily(...,BaseField=>...)" -- see getFlatFamily,
    -- Compute the flat family depending on a subset of
    parameters of the universal unfolding
  * "getSmoothingFamily(...,BaseField=>...)" -- see getSmoothingFamily,
    -- Get a smoothing family for the semigroup L
  * "getSmoothingFamilyWithVersalDeformation(...,BaseField=>...)" -- see
    getSmoothingFamilyWithVersalDeformation,
    -- Get a smoothing family using
    versal deformations
  * "makeUnfolding(...,BaseField=>...)" -- see makeUnfolding,
    -- Makes the universal homogeneous unfolding of an ideal
    with positive degree parameters
  * "smoothnessWithReductions(...,BaseField=>...)" -- see
    smoothnessWithReductions, -- Check smoothness by
    using reductions to points
  * "solvingFlatteningRelations(...,BaseField=>...)" -- see
    solvingFlatteningRelations, -- Solving the
    flatttening relations over QQ

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

The object BaseField, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3271:0.

Bound -- Option keys for various functions
******************************************

Functions with optional argument named Bound:
=============================================

  * "collectWithVersalDeformations(...,Bound=>...)" -- see
    collectWithVersalDeformations, -- Collect
    1-parameter families the using versal deformations
  * "getSmoothingFamilyWithVersalDeformation(...,Bound=>...)" -- see
    getSmoothingFamilyWithVersalDeformation,
    -- Get a smoothing family using
    versal deformations

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

The object Bound, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3278:0.

checkFlatnessOfOneParameterFamilies -- Check flatness of 1-parameter famiiles
*****************************************************************************

  * Usage:
        answer=checkFlatnessOfOneParameterFamilies(LL,name)
  * Inputs:
      * LL, a list (Macaulay2Doc), list of semigroups
      * name, a string (Macaulay2Doc), name of a " .dbm" file on
        the hard disk.
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value 0
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), true if all
        1-parameter family are flat families

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

The database Y=openDatabase name contains an entries Y#(toString L|"ring") and
Y#(toString L|"ideal") of a ring and an ideal over QQ for every L in LL; The
function reads  the corresponding list of ideals of one parameter smoothing
families, and checks whether they areflat families.

Caveat
======

If for L there are no entries in Y an error occurs.

Ways to use checkFlatnessOfOneParameterFamilies:
================================================

  * "checkFlatnessOfOneParameterFamilies(List,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3543:0.

checkSmoothnessOfOneParameterFamilies -- Check smoothness of 1-parameter families
*********************************************************************************

  * Usage:
        (answer,toDoAgain)=checkSmoothnessOfOneParameterFamilies(LL,name)
  * Inputs:
      * LL, a list (Macaulay2Doc), list of semigroups
      * name, a string (Macaulay2Doc), name of a " .dbm" file on
        the hard disk.
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10000019
      * Verbose => ..., default value 0
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), true if all
        1-parameter family are smoothing families
      * toDoAgain, a list (Macaulay2Doc), list of elements L in LL
        where the smoothness check failed

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

The database Y=openDatabase name contains an entries Y#(toString L|"ring") and
Y#(toString L|"ideal") of a ring and an ideal over QQ for every L in LL; The
function reads the corresponding list of ideals of one parameter smoothing
families, and checks whether they are indeed smoothing families. The smoothness
is checked by reduction to a finite field. Picking a bad prime field might give
a few cases where the test fails. The corresponding semigroups are collected in
the list toDoAgain.

Caveat
======

If for L there are no entries in Y an error occurs.

Ways to use checkSmoothnessOfOneParameterFamilies:
==================================================

  * "checkSmoothnessOfOneParameterFamilies(List,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3576:0.

clearDenominators -- Clear denominators
***************************************

  * Usage:
        (worked,fiber)=clearDenominators(family)
  * Inputs:
      * family, a matrix (Macaulay2Doc), a family over a finite
        large prime field
  * Optional inputs (Macaulay2Doc),:
      * CoeffBound => ..., default value 10000
  * Outputs:
      * worked, a Boolean value (Macaulay2Doc), true if clearing
        denominators worked
      * fiber, a matrix (Macaulay2Doc), matrix of generators of a
        1-parameter smoothing family over QQ

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

Since we work at this point over a large prime field we might detect
denominators for a lift to QQ by multiplying each equation by a factor such
that the naive lifts are still small. The factors we try are have 2,3 and 5 as
the only prime factors and are not so small.

+-----------------------------------------------------------------------------+
|i1 : L={7,8,17,19,20}                                                        |
|                                                                             |
|o1 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 12                                                                      |
+-----------------------------------------------------------------------------+
|i3 : I=semigroupIdeal(L,"BaseField"=>QQ);                                    |
|                                                                             |
|o3 : Ideal of QQ[x ..x , x , x ..x ]                                         |
|                  0   1   3   5   6                                          |
+-----------------------------------------------------------------------------+
|i4 : (answer,J,comp)=testBound(L,12,Verbose=>1);                             |
|# of coordinate linear subspace of the base = 21                             |
|# of linear subsets which leading to a point =21                             |
+-----------------------------------------------------------------------------+
|i5 : (base1,family1)=getParameterFamily J;                                   |
+-----------------------------------------------------------------------------+
|i6 : base=last decompose base1                                               |
|                                                                             |
|                                                                             |
|o6 = ideal (a      a       - a      a      , a      a       - a      a      ,|
|             {0, 2} {2, 3}    {0, 1} {1, 3}   {3, 4} {2, 3}    {1, 2} {1, 3} |
|  2                                                                          |
| a       - a      a      , a      a       - a      a      , a      a         |
|  {0, 2}    {1, 2} {1, 3}   {0, 1} {0, 2}    {1, 2} {2, 3}   {3, 4} {0,      |
|    - a      a      )                                                        |
| 1}    {1, 2} {0, 2}                                                         |
|                                                                             |
| o6 : Ideal of QQ[a      , a      , a      , a      , a      , a      , a    |
|                  {1, 1}   {1, 2}   {3, 4}   {0, 1}   {0, 2}   {2, 3}   {1, 3|
| i7 : family=family1%sub(base,ring family1);                                 |
|                                                                             |
|                                                                             |
| o7 : Matrix (QQ[x ..x , x , x ..x , a      , a      , a      , a      , a   |
|                  0   1   3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5,|
| i8 : (worked,fiber)=solvingFlatteningRelations(base,family,I);              |
| # of coordinate linear subspace of the base = 2                             |
| # of linear subsets which leading to a point =2                             |
| i9 : p=nextPrime 10^5                                                       |
|                                                                             |
| o9 = 100003                                                                 |
| i10 : kk=ZZ/p;                                                              |
| i11 : SzFinite=kk[support J, Degrees=>apply(support J,m->degree m)]         |
|                                                                             |
| o11 = SzFinite                                                              |
|                                                                             |
| o11 : PolynomialRing                                                        |
| i12 : fibF=sub(fiber,SzFinite);                                             |
|                                                                             |
|                      1             10                                       |
| o12 : Matrix SzFinite  <-- SzFinite                                         |
| i13 : fiber=fibF*diagonalMatrix({1/2_kk,2/3_kk,1/5_kk,4/3_kk,1/30_kk,2/5_kk,|
|                                                                             |
| o13 = | -50001x_1^3+50001x_0x_3-50001x_1-50001x_0                           |
|  33335x_1x_5-33335x_0x_6+33335x_0^2+33335x_1-33335x_0                       |
|  -40001x_0^4+40001x_1x_6-40001x_0x_1-40001x_0^2+40001x_1                    |
|  -33333x_1^2x_3+33333x_0^2x_5+33333x_5-33333x_3-33333x_1^2-33333x_0x_1-     |
|  33333x_0^2 -23334x_3^2+23334x_0^2x_6-23334x_0^3+23334x_6-23334x_1^2-       |
|  46668x_0x_1+23334x_0^2-23334x_0+46668                                      |
|  20001x_3x_5-20001x_1^2x_6+20001x_0x_1^2-20001x_6-20001x_5+20001x_3-        |
|  20001x_1^2+20001x_0-40002                                                  |
|  -50001x_0^3x_1^2+50001x_3x_6-50001x_0x_3-50001x_0x_1^2-50001x_0^3-         |
|  50001x_6+50001x_3-50001                                                    |
|  -33334x_0^3x_3+33334x_5^2-33334x_0^2x_1-33334x_0^3-33334x_6+33334x_0+      |
|  33335 -50001x_0^2x_1x_3+50001x_5x_6-50001x_0x_5-50001x_0x_1^2-50001x_0^    |
|  2x_1-50001x_0^3-50001x_6+50001x_5-50001                                    |
|  -33334x_0^3x_5+33334x_6^2+33335x_0x_6-33334x_0x_5-33334x_0^3-33335x_6+     |
|  33334x_0^2+x_0+33334 |                                                     |
|                                                                             |
|                      1             10                                       |
| o13 : Matrix SzFinite  <-- SzFinite                                         |
| i14 : (worked,fiber1)=clearDenominators fiber                               |
|                                                                             |
| o14 = (true, | x_1^3-x_0x_3+x_1+x_0 2x_1x_5-2x_0x_6+2x_0^2+2x_1-2x_0        |
|  x_0^4-x_1x_6+x_0x_1+x_0^2-x_1                                              |
|  4x_1^2x_3-4x_0^2x_5-4x_5+4x_3+4x_1^2+4x_0x_1+4x_0^2                        |
|  x_3^2-x_0^2x_6+x_0^3-x_6+x_1^2+2x_0x_1-x_0^2+x_0-2                         |
|  2x_3x_5-2x_1^2x_6+2x_0x_1^2-2x_6-2x_5+2x_3-2x_1^2+2x_0-4                   |
|  x_0^3x_1^2-x_3x_6+x_0x_3+x_0x_1^2+x_0^3+x_6-x_3+1                          |
|  x_0^3x_3-x_5^2+x_0^2x_1+x_0^3+x_6-x_0+2                                    |
|  x_0^2x_1x_3-x_5x_6+x_0x_5+x_0x_1^2+x_0^2x_1+x_0^3+x_6-x_5+1                |
|  x_0^3x_5-x_6^2+2x_0x_6+x_0x_5+x_0^3-2x_6-x_0^2+3x_0-1 |)                   |
|                                                                             |
|o14 : Sequence                                                               |
|-----------------------------------------------------------------------------|
|  ]                                                                          |
|}                                                                            |
|                                                                             |
|                                                                             |
|                                                                             |
|   , a      , a      , a      , a      , a      , a      , a      , a      , |
| 0}   {4, 0}   {9, 1}   {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}  |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|1/2_kk,1/3_kk,1/2_kk,1/3_kk})                                                |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {6, 6}   {5, 5}   {4, 3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a       , a      , |
|4}   {3, 3}   {1, 2}   {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}  |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a       , a       , a      , a      ,    |
| {6, 8}   {5, 7}   {3, 5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}     |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a       , a       , a      , a      , a      , a       ,   |
| {3, 6}   {0, 2}   {9, 14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}    |
|-----------------------------------------------------------------------------|
|                                                    1                        |
|a       , a       , a       , a      , a      , a      ])  <-- (QQ[x ..x ,   |
| {8, 14}   {6, 12}   {5, 11}   {4, 9}   {2, 4}   {1, 3}             0   1    |
|-----------------------------------------------------------------------------|
|                                                                             |
|x , x ..x , a      , a      , a      , a      , a      , a      , a      ,   |
| 3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5, 0}   {4, 0}   {9, 1}    |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}   {6, 6}   {5, 5}   {4, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, 4}   {3, 3}   {1, 2}   |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a       , a      , a      , a      , a   |
| {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}   {6, 8}   {5, 7}   {3,|
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a       , a       , a      , a      , a      , a      , a       |
|5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}   {3, 6}   {0, 2}   {9,    |
|-----------------------------------------------------------------------------|
|                                                                             |
|   , a       , a      , a      , a      , a       , a       , a       , a    |
|14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}   {8, 14}   {6, 12}   {5, |
|-----------------------------------------------------------------------------|
|                           10                                                |
|   , a      , a      , a      ])                                             |
|11}   {4, 9}   {2, 4}   {1, 3}                                               |
+-----------------------------------------------------------------------------+

See also
========

  * solvingFlatteningRelations -- Solving
    the flatttening relations over QQ

Ways to use clearDenominators:
==============================

  * "clearDenominators(Matrix)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2713:0.

CoeffBound -- Option keys for various functions
***********************************************

Functions with optional argument named CoeffBound:
==================================================

  * "clearDenominators(...,CoeffBound=>...)" -- see clearDenominators,
    -- Clear denominators
  * "collectWithVersalDeformations(...,CoeffBound=>...)" -- see
    collectWithVersalDeformations, -- Collect
    1-parameter families the using versal deformations
  * "getSmoothingFamily(...,CoeffBound=>...)" -- see getSmoothingFamily,
    -- Get a smoothing family for the semigroup L
  * "getSmoothingFamilyWithVersalDeformation(...,CoeffBound=>...)" -- see
    getSmoothingFamilyWithVersalDeformation,
    -- Get a smoothing family using
    versal deformations
  * "solvingFlatteningRelations(...,CoeffBound=>...)" -- see
    solvingFlatteningRelations, -- Solving the
    flatttening relations over QQ

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

The object CoeffBound, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3285:0.

CoeffSize -- Option keys for various functions
**********************************************

Functions with optional argument named CoeffSize:
=================================================

  * "collectByBound(...,CoeffSize=>...)" -- see collectByBound,
    -- Collect 1-parameter families filtered by bound (or
    congruences or range)
  * "collectByCongruences(...,CoeffSize=>...)" -- see collectByBound,
    -- Collect 1-parameter families filtered by bound (or
    congruences or range)
  * "collectByRange(...,CoeffSize=>...)" -- see collectByBound,
    -- Collect 1-parameter families filtered by bound (or
    congruences or range)
  * "collectWithVersalDeformations(...,CoeffSize=>...)" -- see
    collectWithVersalDeformations, -- Collect
    1-parameter families the using versal deformations
  * "getOneParameterFamily(...,CoeffSize=>...)" -- see
    getOneParameterFamily, -- Compute a one parameter
    smoothing family
  * "getSmoothingFamily(...,CoeffSize=>...)" -- see getSmoothingFamily,
    -- Get a smoothing family for the semigroup L
  * "getSmoothingFamilyWithVersalDeformation(...,CoeffSize=>...)" -- see
    getSmoothingFamilyWithVersalDeformation,
    -- Get a smoothing family using
    versal deformations
  * "solvingFlatteningRelations(...,CoeffSize=>...)" -- see
    solvingFlatteningRelations, -- Solving the
    flatttening relations over QQ
  * "testBound(...,CoeffSize=>...)" -- see testBound, -- Test
    whether b is bound for the semigroup L and compute a 1-parameter smoothing
    family if yes
  * "testCongruences(...,CoeffSize=>...)" -- see testBound, --
    Test whether b is bound for the semigroup L and compute a 1-parameter
    smoothing family if yes
  * "testRange(...,CoeffSize=>...)" -- see testBound, -- Test
    whether b is bound for the semigroup L and compute a 1-parameter smoothing
    family if yes

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

The object CoeffSize, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3292:0.

collectByBound -- Collect 1-parameter families filtered by bound (or congruences or range)
******************************************************************************************

  * Usage:
        collectByBound(LL,b,done,doneData)
        collectByRange(LL,b,range,doneData)
        collectByCongruences(LL,b,congruences,doneData)
  * Inputs:
      * LL, a list (Macaulay2Doc), list of semigroups
      * bound, an integer (Macaulay2Doc), degree bound
      * done, a string (Macaulay2Doc), name of a file of done
        examples
      * doneData, a string (Macaulay2Doc), name of the dataFile
        with name doneData.dbm
  * Optional inputs (Macaulay2Doc),:
      * CoeffSize => ..., default value 1
      * Verbose => ..., default value 0

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

We scan the list LL of semigroups L by those which pass testBound(L,b). We
record the successes ba appending them to the file done and by recording the
corresponding data for the smoothing families in doneData on the hard disk.

+--------------------------------------------------+
|i1 : LL=(toDoList 8)_{0..2}                       |
|                                                  |
|o1 = {{6, 7, 9, 17}, {6, 7, 8, 17}, {6, 8, 9, 11}}|
|                                                  |
|o1 : List                                         |
+--------------------------------------------------+
|i2 : X="fam8"                                     |
|                                                  |
|o2 = fam8                                         |
+--------------------------------------------------+
|i3 : Xdbm="fam8.dbm"                              |
|                                                  |
|o3 = fam8.dbm                                     |
+--------------------------------------------------+
|i4 : "collectByBound(LL,6,X,Xdbm)";               |
+--------------------------------------------------+
|i5 : range=toList(6..8)                           |
|                                                  |
|o5 = {6, 7, 8}                                    |
|                                                  |
|o5 : List                                         |
+--------------------------------------------------+
|i6 : LL=(toDoList 8)_{4,5}                        |
|                                                  |
|o6 = {{6, 8, 10, 11, 13}, {7, 8, 9, 10, 13}}      |
|                                                  |
|o6 : List                                         |
+--------------------------------------------------+
|i7 : "collectByRange(LL,range,X,Xdbm)";           |
+--------------------------------------------------+

Reading and writing to the disk does not work in the documentation. Hence we
give the command in quotes.

See also
========

  * toDoList -- Make a list of semigroups not previously known
    to be Weierstrass
  * testBound -- Test whether b is bound for the semigroup L
    and compute a 1-parameter smoothing family if yes

Ways to use collectByBound:
===========================

  * "collectByBound(List,ZZ,String,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2892:0.

collectWithVersalDeformations -- Collect 1-parameter families the using versal deformations
*******************************************************************************************

  * Usage:
        (worked,fibz)=collectWithVersalDeformations(LL,b,done,doneData)
  * Inputs:
      * LL, a list (Macaulay2Doc), list of semigroups
      * b, an integer (Macaulay2Doc), degree bound
      * done, a string (Macaulay2Doc), name of a file of done
        examples
      * doneData, a string (Macaulay2Doc), name of the dataFile
        with name doneData.dbm
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10000019
      * Bound => ..., default value 1
      * CoeffBound => ..., default value 10000
      * CoeffSize => ..., default value 1
      * HighestOrder1 => ..., default value 20
      * Verbose => ..., default value 0

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

We scan the list LL of semigroups L by those which pass
collectWithVersalDeformations. We record the successes by appending them to the
file done and by recording the corresponding data for the smoothing families in
doneData on the hard disk.

+-----------------------------------------------------------------------+
|i1 : LL=(toDoList 8)_{0..2}                                            |
|                                                                       |
|o1 = {{6, 7, 9, 17}, {6, 7, 8, 17}, {6, 8, 9, 11}}                     |
|                                                                       |
|o1 : List                                                              |
+-----------------------------------------------------------------------+
|i2 : X="fam8"                                                          |
|                                                                       |
|o2 = fam8                                                              |
+-----------------------------------------------------------------------+
|i3 : Xdbm="fam8.dbm"                                                   |
|                                                                       |
|o3 = fam8.dbm                                                          |
+-----------------------------------------------------------------------+
|i4 : "(worked,fibz)=collectWithVersalDeformations(LL,b,done,doneData)";|
+-----------------------------------------------------------------------+

Reading and writing to the disk does not work in the documentation. Hence we
give the command in quotes.

Caveat
======

If the versal deformation computation does not finish with "Solution is
polynomial" one needs to increase the default value HighestOrder1=>20 to a
larger number.

See also
========

  * toDoList -- Make a list of semigroups not previously known
    to be Weierstrass

Ways to use collectWithVersalDeformations:
==========================================

  * "collectWithVersalDeformations(List,ZZ,String,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2981:0.

displaySyzygyMatrices -- Display the syzygy matrices
****************************************************

  * Usage:
        A = displaySyzygyMatrices L
  * Inputs:
      * L, a list (Macaulay2Doc), generators of a semigroup with 4
        generators
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value true
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), the answer

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

Does the resolution of the semigroup ideal of L satisfies the degree condition
1 respectively 2 for the 2nd or 3rd syzygy matrix?

+------------------------------------------------------------------------+
|i1 : L = {6,9,13,16}                                                    |
|                                                                        |
|o1 = {6, 9, 13, 16}                                                     |
|                                                                        |
|o1 : List                                                               |
+------------------------------------------------------------------------+
|i2 : displaySyzygyMatrices L;                                           |
|+----------------------------------------------------------------------+|
||{-18} | x_3^2-x_0^3 -y    -w    0    0    x_0^5 0      0      0      |||
||{-22} | x_3y-wx_0   x_3   x_0^2 -w   yx_0 -y2   0      0      -x_0^6 |||
||{-25} | x_3w-yx_0^2 x_0   x_3   y    -w   0     -y2    -x_0^5 0      |||
||{-32} | w2-y2x_0    0     0     -x_0 x_3  0     0      0      -y2    |||
||{-39} | y3-x_3x_0^5 0     0     0    0    x_3   -x_0^2 -w     -yx_0  |||
||{-42} | y2w-x_0^7   0     0     0    0    -x_0  x_3    y      w      |||
||{0}   | 0           w     -y    x_3  x_0  0     0      0      0      |||
||{0}   | 0           0     x_0^5 -y2  0    w     -y     x_3    x_0    |||
||{0}   | 0           x_0^6 0     0    y2   yx_0  -w     x_0^2  x_3    |||
|+----------------------------------------------------------------------+|
||(13, | 13  16 20 23 30 33 37 40 |, | 16  33 36 |)                     ||
||     | 9   12 16 19 26 29 33 36 |  | 13  30 33 |                      ||
||     | 6   9  13 16 23 26 30 33 |  | 9   26 29 |                      ||
||     | -1  2  6  9  16 19 23 26 |  | 6   23 26 |                      ||
||     | -8  -5 -1 2  9  12 16 19 |  | -1  16 19 |                      ||
||     | -11 -8 -4 -1 6  9  13 16 |  | -4  13 16 |                      ||
||                                   | -8  9  12 |                      ||
||                                   | -11 6  9  |                      ||
|+----------------------------------------------------------------------+|
+------------------------------------------------------------------------+
|i3 : satisfiesDegreeCondition1 L                                        |
|                                                                        |
|o3 = true                                                               |
+------------------------------------------------------------------------+
|i4 : satisfiesDegreeCondition2 L                                        |
|                                                                        |
|o4 = true                                                               |
+------------------------------------------------------------------------+

The degree conditions are satisfied. In the next case there are not satisfied.

+-----------------------------------------------------------------------------+
|i5 : L = {6,15,17,20}                                                        |
|                                                                             |
|o5 = {6, 15, 17, 20}                                                         |
|                                                                             |
|o5 : List                                                                    |
+-----------------------------------------------------------------------------+
|i6 : A=displaySyzygyMatrices(L,Verbose=>false);                              |
+-----------------------------------------------------------------------------+
|i7 : netList A                                                               |
|                                                                             |
|     +-----------------------------------------------------------------------|
|o7 = |{-30} | x_3^2-x_0^5 -y    -w    0      0     x_0^6  0      0      0    |
|     |{-32} | x_3y-wx_0^2 x_3   x_0^3 -w     yx_0  -y2    0      0      -x_0^|
|     |{-35} | x_3w-yx_0^3 x_0^2 x_3   y      -w    0      -y2    -x_0^6 0    |
|     |{-40} | w2-y2x_0    0     0     -x_0^2 x_3   0      0      0      -y2  |
|     |{-51} | y3-x_3x_0^6 0     0     0      0     x_3    -x_0^3 -w     -yx_0|
|     |{-54} | y2w-x_0^9   0     0     0      0     -x_0^2 x_3    y      w    |
|     |{0}   | 0           w     -y    x_3    x_0^2 0      0      0      0    |
|     |{0}   | 0           0     x_0^6 -y2    0     w      -y     x_3    x_0^2|
|     |{0}   | 0           x_0^7 0     0      y2    yx_0   -w     x_0^3  x_3  |
|     +-----------------------------------------------------------------------|
|     |(18, | 17 20 22 25 36 39 41 44 |, | 20 39 42 |)                        |
|     |     | 15 18 20 23 34 37 39 42 |  | 17 36 39 |                         |
|     |     | 12 15 17 20 31 34 36 39 |  | 15 34 37 |                         |
|     |     | 7  10 12 15 26 29 31 34 |  | 12 31 34 |                         |
|     |     | -4 -1 1  4  15 18 20 23 |  | 1  20 23 |                         |
|     |     | -7 -4 -2 1  12 15 17 20 |  | -2 17 20 |                         |
|     |                                  | -4 15 18 |                         |
|     |                                  | -7 12 15 |                         |
|     +-----------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|---+                                                                         |
|  ||                                                                         |
|7 ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|  ||                                                                         |
|---+                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|   |                                                                         |
|---+                                                                         |
+-----------------------------------------------------------------------------+
|i8 : satisfiesDegreeCondition1 L                                             |
|                                                                             |
|o8 = false                                                                   |
+-----------------------------------------------------------------------------+
|i9 : satisfiesDegreeCondition2 L                                             |
|                                                                             |
|o9 = true                                                                    |
+-----------------------------------------------------------------------------+

Ways to use displaySyzygyMatrices:
==================================

  * "displaySyzygyMatrices(List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3401:0.

findCompleteIntersection -- Find complete intersection defined by some of the generators
****************************************************************************************

  * Usage:
        column = findCompleteIntersection I
  * Inputs:
      * I, an ideal (Macaulay2Doc), a semigroup ideal
  * Optional inputs (Macaulay2Doc),:
      * Strategy => ..., default value "front"
  * Outputs:
      * column, a list (Macaulay2Doc), a list of codim I generators
        of the ideal I which defines a complete intersection

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

We pick positions one by one generators of I, which increase the codimension by
one until reached codim I.

+-----------------------------------------------------------------------------+
|i1 : L={7, 8, 17, 19, 20}                                                    |
|                                                                             |
|o1 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I=semigroupIdeal L                                                      |
|                                                                             |
|             3                       4          2      2     2    2          |
|o2 = ideal (x  - x x , x x  - x x , x  - x x , x x  - x x , x  - x x , x x  -|
|             1    0 3   1 5    0 6   0    1 6   1 3    0 5   3    0 6   3 5  |
|     ------------------------------------------------------------------------|
|      2     3 2          3      2   2              3      2                  |
|     x x , x x  - x x , x x  - x , x x x  - x x , x x  - x )                 |
|      1 6   0 1    3 6   0 3    5   0 1 3    5 6   0 5    6                  |
|                                                                             |
|                ZZ                                                           |
|o2 : Ideal of -----[x ..x , x , x ..x ]                                      |
|              10007  0   1   3   5   6                                       |
+-----------------------------------------------------------------------------+
|i3 : numgens I                                                               |
|                                                                             |
|o3 = 10                                                                      |
+-----------------------------------------------------------------------------+
|i4 : columnFront=findCompleteIntersection I                                  |
|                                                                             |
|o4 = {0, 1, 4, 7}                                                            |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+
|i5 : ci=ideal (gens I)_columnFront                                           |
|                                                                             |
|             3                       2    2     3      2                     |
|o5 = ideal (x  - x x , x x  - x x , x  - x x , x x  - x )                    |
|             1    0 3   1 5    0 6   3    0 6   0 3    5                     |
|                                                                             |
|                ZZ                                                           |
|o5 : Ideal of -----[x ..x , x , x ..x ]                                      |
|              10007  0   1   3   5   6                                       |
+-----------------------------------------------------------------------------+
|i6 : codim ci == codim I                                                     |
|                                                                             |
|o6 = true                                                                    |
+-----------------------------------------------------------------------------+

There are three strategies "front", "back" and "random".

+-----------------------------------------------------------------+
|i7 : columnBack=findCompleteIntersection(I,Strategy=>"back")     |
|                                                                 |
|o7 = {9, 8, 7, 0}                                                |
|                                                                 |
|o7 : List                                                        |
+-----------------------------------------------------------------+
|i8 : ci2=ideal (gens I)_columnBack                               |
|                                                                 |
|             3      2   2              3      2   3              |
|o8 = ideal (x x  - x , x x x  - x x , x x  - x , x  - x x )      |
|             0 5    6   0 1 3    5 6   0 3    5   1    0 3       |
|                                                                 |
|                ZZ                                               |
|o8 : Ideal of -----[x ..x , x , x ..x ]                          |
|              10007  0   1   3   5   6                           |
+-----------------------------------------------------------------+
|i9 : codim ci2 == codim I                                        |
|                                                                 |
|o9 = true                                                        |
+-----------------------------------------------------------------+
|i10 : columnRandom=findCompleteIntersection(I,Strategy=>"random")|
|                                                                 |
|o10 = {8, 1, 4, 2}                                               |
|                                                                 |
|o10 : List                                                       |
+-----------------------------------------------------------------+
|i11 : ci3=ideal (gens I)_columnRandom                            |
|                                                                 |
|              2                           2    2     4           |
|o11 = ideal (x x x  - x x , x x  - x x , x  - x x , x  - x x )   |
|              0 1 3    5 6   1 5    0 6   3    0 6   0    1 6    |
|                                                                 |
|                 ZZ                                              |
|o11 : Ideal of -----[x ..x , x , x ..x ]                         |
|               10007  0   1   3   5   6                          |
+-----------------------------------------------------------------+
|i12 : codim ci3 == codim I                                       |
|                                                                 |
|o12 = true                                                       |
+-----------------------------------------------------------------+

Caveat
======

It is possible that the function does not find a complete intersection of
generators. In that case a too short List is returned.

See also
========

  * semigroupIdeal (NumericalSemigroups) -- The ideal
    defining the semigroup ring

Ways to use findCompleteIntersection:
=====================================

  * "findCompleteIntersection(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1824:0.

findPoint -- Find a kk-rational point in a variety
**************************************************

  * Usage:
        point=findPoint c
  * Inputs:
      * I, an ideal (Macaulay2Doc),
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value false
  * Outputs:
      * B, a matrix (Macaulay2Doc), coordinates of a point in the
        finite ground field

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

Given ideal c the functions adds random linear equations L to c to obtain
1-dimensional ideal. Since the ground field is finite, decompose the ideal c+L
will lead to a point with positive probability. Thus repeating will lead to
success.

+-----------------------------------------------------------------------------+
|i1 : kk=ZZ/101                                                               |
|                                                                             |
|o1 = kk                                                                      |
|                                                                             |
|o1 : QuotientRing                                                            |
+-----------------------------------------------------------------------------+
|i2 : R=kk[x_0..x_6]                                                          |
|                                                                             |
|o2 = R                                                                       |
|                                                                             |
|o2 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i3 : c=ideal random(R^1,R^{2:-1,2:-2})                                       |
|                                                                             |
|                                                                             |
|o3 = ideal (24x  - 30x  + 19x  - 10x  - 8x  - 29x  - 38x , - 36x  - 29x  +   |
|               0      1      2      3     4      5      6       0      1     |
|     ------------------------------------------------------------------------|
|                                          2               2                  |
|     19x  - 29x  - 22x  - 24x  - 16x , 39x  + 34x x  + 16x  - 47x x  + 45x x |
|        2      3      4      5      6     0      0 1      1      0 2      1 2|
|     ------------------------------------------------------------------------|
|          2                                 2                                |
|     + 39x  - 18x x  - 48x x  - 17x x  + 40x  - 43x x  + 47x x  + 48x x  +   |
|          2      0 3      1 3      2 3      3      0 4      1 4      2 4     |
|     ------------------------------------------------------------------------|
|                 2                                                2          |
|     46x x  - 23x  - 28x x  - 16x x  + 35x x  + x x  + 2x x  - 37x  + 38x x  |
|        3 4      4      0 5      1 5      2 5    3 5     4 5      5      0 6 |
|     ------------------------------------------------------------------------|
|                                                       2     2               |
|     + 15x x  - 38x x  + 22x x  - 47x x  - 10x x  - 18x , 21x  + 19x x  +    |
|          1 6      2 6      3 6      4 6      5 6      6     0      0 1      |
|     ------------------------------------------------------------------------|
|        2                        2                                 2         |
|     22x  - 39x x  - 34x x  + 43x  - 13x x  - 47x x  - 11x x  + 11x  - 15x x |
|        1      0 2      1 2      2      0 3      1 3      2 3      3      0 4|
|     ------------------------------------------------------------------------|
|                                    2                                        |
|     + 19x x  + 36x x  - 28x x  - 7x  - 47x x  + 7x x  + 11x x  - 3x x  +    |
|          1 4      2 4      3 4     4      0 5     1 5      2 5     3 5      |
|     ------------------------------------------------------------------------|
|                 2                                                           |
|     29x x  - 13x  + 2x x  - 23x x  + 33x x  - 47x x  + 15x x  + 30x x  +    |
|        4 5      5     0 6      1 6      2 6      3 6      4 6      5 6      |
|     ------------------------------------------------------------------------|
|        2                                                                    |
|     39x )                                                                   |
|        6                                                                    |
|                                                                             |
|o3 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+
|i4 : B=findPoint c                                                           |
|                                                                             |
|o4 = | 29 27 -32 -31 32 7 1 |                                                |
|                                                                             |
|              1       7                                                      |
|o4 : Matrix kk  <-- kk                                                       |
+-----------------------------------------------------------------------------+
|i5 : sub(c,B)==0                                                             |
|                                                                             |
|o5 = true                                                                    |
+-----------------------------------------------------------------------------+

Ways to use findPoint:
======================

  * "findPoint(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1733:0.

flatteningRelations -- Compute the flattening relations of an unfolding
***********************************************************************

  * Usage:
        J= flatteningRelation(I,A,unfolding)
  * Inputs:
      * I, an ideal (Macaulay2Doc), homogeneous with respect to a
        possibly nonstandard NN-grading
      * A, a ring (Macaulay2Doc), the ring of parameters of the
        unfolding
      * unfolding, a matrix (Macaulay2Doc), an unfolding of gens
        I
  * Outputs:
      * J, an ideal (Macaulay2Doc), of A

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

Given the tuple (I,A,unfolding) the function computes the flattening relations
via the set of Buchberger test syzygies. The procedure terminates since the
parameters of A have positive degree, and the unfolding is homogeneous.

+-----------------------------------------------------------------------------+
|i1 : L={4,6,7}                                                               |
|                                                                             |
|o1 = {4, 6, 7}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I = trim semigroupIdeal L;                                              |
|                                                                             |
|                ZZ                                                           |
|o2 : Ideal of -----[x , x ..x ]                                              |
|              10007  0   2   3                                               |
+-----------------------------------------------------------------------------+
|i3 : (A,unfolding)=makeUnfolding I                                           |
|                                                                             |
|o3 = (A, | x_0^3-x_2^2+a_{0, 0}+x_0a_{0, 1}+x_2a_{0, 2}+x_3a_{0,             |
|     ------------------------------------------------------------------------|
|     3}+x_0^2a_{0, 4}+x_0x_2a_{0, 5}+x_0x_3a_{0, 6} x_0^2x_2-x_3^2+a_{1,     |
|     ------------------------------------------------------------------------|
|     0}+x_0a_{1, 1}+x_2a_{1, 2}+x_3a_{1, 3}+x_0^2a_{1, 4}+x_0x_2a_{1,        |
|     ------------------------------------------------------------------------|
|     5}+x_0x_3a_{1, 6}+x_2^2a_{1, 7}+x_2x_3a_{1, 8} |)                       |
|                                                                             |
|o3 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i4 : S=ring I                                                                |
|                                                                             |
|o4 = S                                                                       |
|                                                                             |
|o4 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i5 : fI=res I                                                                |
|                                                                             |
|      1      2      1                                                        |
|o5 = S  <-- S  <-- S                                                         |
|                                                                             |
|     0      1      2                                                         |
|                                                                             |
|o5 : Complex                                                                 |
+-----------------------------------------------------------------------------+
|i6 : degs=flatten (gens A/degree)                                            |
|                                                                             |
|o6 = {14, 12, 10, 8, 8, 7, 6, 6, 5, 4, 4, 3, 2, 2, 1, 1}                     |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : n=floor(max degs/2)+3                                                   |
|                                                                             |
|o7 = 10                                                                      |
+-----------------------------------------------------------------------------+
|i8 : restricted=ideal select(gens A, y-> (degree y)_0<n);                    |
|                                                                             |
|o8 : Ideal of A                                                              |
+-----------------------------------------------------------------------------+
|i9 : SA=ring unfolding                                                       |
|                                                                             |
|o9 = SA                                                                      |
|                                                                             |
|o9 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i10 : runfolding=unfolding%sub(restricted,SA);                               |
|                                                                             |
|               1       2                                                     |
|o10 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+
|i11 : transpose runfolding                                                   |
|                                                                             |
|o11 = {-12} | x_0^3-x_2^2+a_{0, 0}                |                          |
|      {-14} | x_0^2x_2-x_3^2+a_{1, 0}+x_0a_{1, 1} |                          |
|                                                                             |
|               2       1                                                     |
|o11 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+
|i12 : J=flatteningRelations(I,A,runfolding);                                 |
|                                                                             |
|o12 : Ideal of A                                                             |
+-----------------------------------------------------------------------------+
|i13 : cJ=decompose J;#cJ                                                     |
|                                                                             |
|o14 = 1                                                                      |
+-----------------------------------------------------------------------------+
|i15 : ideal prune (A/J)                                                      |
|                                                                             |
|o15 = ideal ()                                                               |
|                                                                             |
|                 ZZ                                                          |
|o15 : Ideal of -----[a      , a      , a      , a      , a      , a      ,   |
|               10007  {1, 0}   {0, 0}   {1, 1}   {1, 2}   {0, 1}   {1, 3}    |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {1, 4}   {0, 2}   {0, 3}   {1, 5}   {0, 4}   {1, 6}   {1, 7}   {0, 5}   {1, |
|-----------------------------------------------------------------------------|
|  , a      ]                                                                 |
|8}   {0, 6}                                                                  |
+-----------------------------------------------------------------------------+
|i16 : family=runfolding%sub(J,SA);                                           |
|                                                                             |
|               1       2                                                     |
|o16 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+
|i17 : betti res ideal family == betti res I                                  |
|                                                                             |
|o17 = true                                                                   |
+-----------------------------------------------------------------------------+

Thus this is a flat family!

+----------------------------------------------------------------------------+
|i18 : fiber=ideal sub(family,vars S|random(S^1,S^(numgens A)));             |
|                                                                            |
|o18 : Ideal of S                                                            |
+----------------------------------------------------------------------------+
|i19 : singFiber=radical ideal gens gb (fiber+minors(codim I,jacobian fiber))|
|                                                                            |
|o19 = ideal 1                                                               |
|                                                                            |
|o19 : Ideal of S                                                            |
+----------------------------------------------------------------------------+

Thus the family is a smoothing of S/I so the semigroup L in the example is a
Weierstrass semigroup by Pinkham's thesis.

See also
========

  * makeUnfolding -- Makes the universal homogeneous
    unfolding of an ideal with positive degree parameters

Ways to use flatteningRelations:
================================

  * "flatteningRelations(Ideal,Ring,Matrix)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1586:0.

getFlatFamily -- Compute the flat family depending on a subset of parameters of the universal unfolding
*******************************************************************************************************

  * Usage:
        (J,family)=getFlatFamily(I,A,runfolding)
        (J,family)=getFlatFamily(I,A,unfolding,variableList)
        initialList=prepareInitialPositionList(L,b)
  * Inputs:
      * I, an ideal (Macaulay2Doc), of a semigroup ring
      * A, a ring (Macaulay2Doc), coordinate ring of the base of
        the restricted unfolding
      * runfolding, a matrix (Macaulay2Doc), equations of the
        restricted unfolding
      * variableList, a list (Macaulay2Doc), list of variables to
        be used in the restricted unfolding
      * b, an integer (Macaulay2Doc), bound on the degree of the
        parameters
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10007
      * Verbose => ..., default value false
  * Outputs:
      * J, an ideal (Macaulay2Doc), ideal of flattening relations
      * family, a matrix (Macaulay2Doc), equations of the reduced
        equations
      * initialList, a list (Macaulay2Doc), list of positions of
        the desired variables

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

We compute the flattening relations.

+-----------------------------------------------------------------------------+
|i1 : L = {4,5,6}                                                             |
|                                                                             |
|o1 = {4, 5, 6}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 4                                                                       |
+-----------------------------------------------------------------------------+
|i3 : I=ideal semigroupRing(L,"BaseField"=>ZZ/nextPrime 10^4)                 |
|                                                                             |
|             2          3    2                                               |
|o3 = ideal (x  - x x , x  - x )                                              |
|             1    0 2   0    2                                               |
|                                                                             |
|                ZZ                                                           |
|o3 : Ideal of -----[x ..x ]                                                  |
|              10007  0   2                                                   |
+-----------------------------------------------------------------------------+
|i4 : (A,unfolding)=makeUnfolding I;                                          |
+-----------------------------------------------------------------------------+
|i5 : (J,family)=getFlatFamily(I,A,unfolding);                                |
+-----------------------------------------------------------------------------+
|i6 : betti J                                                                 |
|                                                                             |
|            0                                                                |
|o6 = total: 1                                                                |
|         0: 1                                                                |
|                                                                             |
|o6 : BettiTally                                                              |
+-----------------------------------------------------------------------------+
|i7 : support unfolding                                                       |
|                                                                             |
|o7 = {x , x , x , a      , a      , a      , a      , a      , a      , a    |
|       0   1   2   {1, 0}   {0, 0}   {1, 1}   {1, 2}   {1, 3}   {0, 1}   {0, |
|     ------------------------------------------------------------------------|
|       , a      , a      , a      , a      , a      , a      , a      }      |
|     2}   {1, 4}   {0, 3}   {1, 5}   {1, 6}   {0, 4}   {1, 7}   {0, 5}       |
|                                                                             |
|o7 : List                                                                    |
+-----------------------------------------------------------------------------+
|i8 : support family                                                          |
|                                                                             |
|o8 = {x , x , x , a      , a      , a      , a      , a      , a      , a    |
|       0   1   2   {1, 0}   {0, 0}   {1, 1}   {1, 2}   {1, 3}   {0, 1}   {0, |
|     ------------------------------------------------------------------------|
|       , a      , a      , a      , a      , a      , a      , a      }      |
|     2}   {1, 4}   {0, 3}   {1, 5}   {1, 6}   {0, 4}   {1, 7}   {0, 5}       |
|                                                                             |
|o8 : List                                                                    |
+-----------------------------------------------------------------------------+
|i9 : family_(0,0)                                                            |
|                                                                             |
|      2                                                         2            |
|o9 = x  - x x  + a       + x a       + x a       + x a       + x a       +   |
|      1    0 2    {0, 0}    0 {0, 1}    1 {0, 2}    2 {0, 3}    0 {0, 4}     |
|     ------------------------------------------------------------------------|
|     x x a                                                                   |
|      0 1 {0, 5}                                                             |
|                                                                             |
|       ZZ                                                                    |
|o9 : -----[x ..x , a      , a      , a      , a      , a      , a      , a   |
|     10007  0   2   {1, 0}   {0, 0}   {1, 1}   {1, 2}   {1, 3}   {0, 1}   {0,|
|-----------------------------------------------------------------------------|
|  , a      , a      , a      , a      , a      , a      , a      ]           |
|2}   {1, 4}   {0, 3}   {1, 5}   {1, 6}   {0, 4}   {1, 7}   {0, 5}            |
+-----------------------------------------------------------------------------+
|i10 : gens ring family                                                       |
|                                                                             |
|o10 = {x , x , x , a      , a      , a      , a      , a      , a      , a   |
|        0   1   2   {1, 0}   {0, 0}   {1, 1}   {1, 2}   {1, 3}   {0, 1}   {0,|
|      -----------------------------------------------------------------------|
|        , a      , a      , a      , a      , a      , a      , a      }     |
|      2}   {1, 4}   {0, 3}   {1, 5}   {1, 6}   {0, 4}   {1, 7}   {0, 5}      |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+
|i11 : support family                                                         |
|                                                                             |
|o11 = {x , x , x , a      , a      , a      , a      , a      , a      , a   |
|        0   1   2   {1, 0}   {0, 0}   {1, 1}   {1, 2}   {1, 3}   {0, 1}   {0,|
|      -----------------------------------------------------------------------|
|        , a      , a      , a      , a      , a      , a      , a      }     |
|      2}   {1, 4}   {0, 3}   {1, 5}   {1, 6}   {0, 4}   {1, 7}   {0, 5}      |
|                                                                             |
|o11 : List                                                                   |
+-----------------------------------------------------------------------------+
|i12 : support family /degree                                                 |
|                                                                             |
|o12 = {{4}, {5}, {6}, {12}, {10}, {8}, {7}, {6}, {6}, {5}, {4}, {4}, {3},    |
|      -----------------------------------------------------------------------|
|      {2}, {2}, {1}, {1}}                                                    |
|                                                                             |
|o12 : List                                                                   |
+-----------------------------------------------------------------------------+

In the second version we restrict to a subset of the variables

+-----------------------------------------------------------------------------+
|i13 : b=5                                                                    |
|                                                                             |
|o13 = 5                                                                      |
+-----------------------------------------------------------------------------+
|i14 : initialList=prepareInitialPositionList(L,b)                            |
|                                                                             |
|o14 = {0, 1, 6, 7, 8, 9}                                                     |
|                                                                             |
|o14 : List                                                                   |
+-----------------------------------------------------------------------------+
|i15 : as = apply(numgens I,i-> drop(support unfolding_{i},#L))               |
|                                                                             |
|o15 = {{a      , a      , a      , a      , a      , a      }, {a      , a   |
|         {0, 0}   {0, 1}   {0, 2}   {0, 3}   {0, 4}   {0, 5}     {1, 0}   {1,|
|      -----------------------------------------------------------------------|
|        , a      , a      , a      , a      , a      , a      }}             |
|      1}   {1, 2}   {1, 3}   {1, 4}   {1, 5}   {1, 6}   {1, 7}               |
|                                                                             |
|o15 : List                                                                   |
+-----------------------------------------------------------------------------+
|i16 : as1=apply(flatten as,m->sub(m,A))                                      |
|                                                                             |
|o16 = {a      , a      , a      , a      , a      , a      , a      , a      |
|        {0, 0}   {0, 1}   {0, 2}   {0, 3}   {0, 4}   {0, 5}   {1, 0}   {1,   |
|      -----------------------------------------------------------------------|
|        , a      , a      , a      , a      , a      , a      }              |
|      1}   {1, 2}   {1, 3}   {1, 4}   {1, 5}   {1, 6}   {1, 7}               |
|                                                                             |
|o16 : List                                                                   |
+-----------------------------------------------------------------------------+
|i17 : restrictionList=as1_initialList                                        |
|                                                                             |
|o17 = {a      , a      , a      , a      , a      , a      }                 |
|        {0, 0}   {0, 1}   {1, 0}   {1, 1}   {1, 2}   {1, 3}                  |
|                                                                             |
|o17 : List                                                                   |
+-----------------------------------------------------------------------------+
|i18 : (J1,family1)=getFlatFamily(I,A,unfolding,restrictionList)              |
|                                                                             |
|o18 = (ideal (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), |    |
|      -----------------------------------------------------------------------|
|      x_1^2-x_0x_2+a_{0, 0}+x_0a_{0, 1} x_0^3-x_2^2+a_{1, 0}+x_0a_{1,        |
|      -----------------------------------------------------------------------|
|      1}+x_1a_{1, 2}+x_2a_{1, 3} |)                                          |
|                                                                             |
|o18 : Sequence                                                               |
+-----------------------------------------------------------------------------+
|i19 : (J2,family2)=pruneFamily(I,J1,family1)                                 |
|                                                                             |
|o19 = (ideal (), | x_1^2-x_0x_2+a_{0, 0}+x_0a_{0, 1} x_0^3-x_2^2+a_{1,       |
|      -----------------------------------------------------------------------|
|      0}+x_0a_{1, 1}+x_1a_{1, 2}+x_2a_{1, 3} |)                              |
|                                                                             |
|o19 : Sequence                                                               |
+-----------------------------------------------------------------------------+

See also
========

  * makeUnfolding -- Makes the universal homogeneous
    unfolding of an ideal with positive degree parameters
  * flatteningRelations -- Compute the flattening
    relations of an unfolding
  * getFlatFamily -- Compute the flat family depending on
    a subset of parameters of the universal unfolding

Ways to use getFlatFamily:
==========================

  * "getFlatFamily(Ideal,Ring,Matrix)"
  * "getFlatFamily(Ideal,Ring,Matrix,List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1656:0.

getFromDisk -- Read a file from the hard disk
*********************************************

  * Usage:
        Ldone=getFromDisk(name)
  * Inputs:
      * name, a string (Macaulay2Doc), the name of a file
  * Outputs:
      * Ldone, a list (Macaulay2Doc),

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

Since reading from the hard disk does not work in the documentation, the
command is in quotes.

+------------------------------+
|i1 : "Ldone=getFromDisk(name)"|
|                              |
|o1 = Ldone=getFromDisk(name)  |
+------------------------------+

Ways to use getFromDisk:
========================

  * "getFromDisk(String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3234:0.

getListOfIdeals -- Read a list of ideals from a dataBase
********************************************************

  * Usage:
        Js = getListOfIdeals(LL,name)
  * Inputs:
      * LL, a list (Macaulay2Doc), list of semigroups
      * name, a string (Macaulay2Doc), name of a .dbm file on the
        disk.
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value 0
  * Outputs:
      * Js, a list (Macaulay2Doc), list of ideals

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

The database Y=openDatabase name contains an entries Y#(toString L|"ring") and
Y#(toString L|"ideal") of a ring and an ideal over QQ for every L in LL; The
function reads the corresponding list of ideals of one parameter smoothing
families, and checks their homogeneity.

Caveat
======

If for L there are no entries in Y an error occurs.

Ways to use getListOfIdeals:
============================

  * "getListOfIdeals(List,String)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3516:0.

getOneParameterFamily -- Compute a one parameter smoothing family
*****************************************************************

  * Usage:
        fib = getOneParameterFamily(J,base,family,p)
  * Inputs:
      * J, an ideal (Macaulay2Doc), of a one-parameter smoothing
        family of a semigroup ideal
      * family, a matrix (Macaulay2Doc), a parametric family
        which uses the same terms as J
      * base, an ideal (Macaulay2Doc), flattening relations
      * p, an integer (Macaulay2Doc), about 1 out of p free
        parameters are chosen nonzero
  * Optional inputs (Macaulay2Doc),:
      * CoeffSize => ..., default value 1
      * Verbose => ..., default value 0
  * Outputs:
      * fib, an ideal (Macaulay2Doc), of a one-parameter smoothing
        family

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

We compute a one-parameter smoothing family which uses the same terms as the
matrix family.

+-----------------------------------------------------------------------------+
|i1 : R=QQ[x_0..x_1, x_3, x_5..x_6, z, Degrees => {7..8, 17, 19..20, 1}]      |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : J=ideal(x_1^3-x_0*x_3+x_1*z^16+x_0*z^17,x_1*x_5-x_0*x_6+x_0^2*z^13+x_1*z|
|   +x_0^2*z^14-x_1*z^20,x_1^2*x_3-x_0^2*x_5-x_5*z^14+x_3*z^16+x_1^2*z^17+x_0*|
|   +x_0^3*z^13-x_6*z^14+x_1^2*z^18+2*x_0*x_1*z^19-x_0^2*z^20+x_0*z^27-2*z^34,|
|   6*z^16-x_5*z^17+x_3*z^19-x_1^2*z^20+x_0*z^29-2*z^36,x_0^3*x_1^2-x_3*x_6+x_|
|   16+x_6*z^17-x_3*z^20+z^37,x_0^3*x_3-x_5^2+x_0^2*x_1*z^16+x_0^3*z^17+x_6*z^|
|   5*x_6+x_0*x_5*z^13+x_0*x_1^2*z^16+x_0^2*x_1*z^17+x_0^3*z^18+x_6*z^19-x_5*z|
|   z^13+x_0*x_5*z^14+x_0^3*z^19-2*x_6*z^20-x_0^2*z^26+3*x_0*z^33-z^40);      |
|                                                                             |
|o2 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^19-x_0*z^20,x_0^4-x_1*x_6+x_0*x_1*z^13                                      |
|x_1*z^18+x_0^2*z^19,x_3^2-x_0^2*x_6                                          |
|x_3*x_5-x_1^2*x_6+x_0*x_1^2*z^13-x_                                          |
|0*x_3*z^13+x_0*x_1^2*z^14+x_0^3*z^                                           |
|18-x_0*z^31+2*z^38,x_0^2*x_1*x_3-x_                                          |
|^20+z^39,x_0^3*x_5-x_6^2+2*x_0*x_6*                                          |
+-----------------------------------------------------------------------------+
|i3 : L=flatten drop(degrees R,-1)                                            |
|                                                                             |
|o3 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : (base,family)=getParameterFamily J;                                     |
+-----------------------------------------------------------------------------+
|i5 : J1=getOneParameterFamily(J,base,family,4)                               |
|   #pos = 2, #posa = 2                                                       |
|                                                                             |
|              3             16      17                 2 13      19   4      |
|o5 = ideal (x  - x x  + x z   + x z  , x x  - x x  + x z   + x z  , x  - x x |
|              1    0 3    1       0      1 5    0 6    0       1      0    1 |
|        13    2 14   2      2        14      16    2 17        18            |
| + x x z   + x z  , x x  - x x  - x z   + x z   + x z   + x x z   +          |
|    0 1       0      1 3    0 5    5       3       1       0 1               |
|  2 19   2    2      3 13      14    2 18         19      27    34           |
| x z  , x  - x x  + x z   - x z   + x z   + 2x x z   + x z   - z  , x x      |
|  0      3    0 6    0       6       1        0 1       0            3 5     |
|    2        2 13      16      17      19      29    36   3 2                |
| - x x  + x x z   - x z   - x z   + x z   + x z   - z  , x x  - x x  +       |
|    1 6    0 1       6       5       3       0            0 1    3 6         |
|      13      2 14    3 16      17   3      2    2   16    3 17      18      |
| x x z   + x x z   + x z   + x z  , x x  - x  + x x z   + x z   + x z   -    |
|  0 3       0 1       0       6      0 3    5    0 1       0       6         |
|    31    38   2                   13      2 16    2   17    3 18            |
| x z   + z  , x x x  - x x  + x x z   + x x z   + x x z   + x z   +          |
|  0            0 1 3    5 6    0 5       0 1       0 1       0               |
|    19   3      2         13        14    3 19    2 26      33               |
| x z  , x x  - x  + 2x x z   + x x z   + x z   - x z   + x z  )              |
|  6      0 5    6     0 6       0 5       0       0       0                  |
|                                                                             |
|o5 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|6                                                                            |
+-----------------------------------------------------------------------------+
|i6 : J_*/size                                                                |
|                                                                             |
|o6 = {4, 5, 5, 7, 9, 9, 8, 7, 9, 9}                                          |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : J1_*/size                                                               |
|                                                                             |
|o7 = {4, 4, 4, 7, 8, 8, 6, 7, 7, 7}                                          |
|                                                                             |
|o7 : List                                                                    |
+-----------------------------------------------------------------------------+

See also
========

  * improveFamily -- Find a 1-parameter smoothing family
    with perhaps smaller number of terms and coefficients
  * getParameterFamily -- Compute the parametric
    family which uses the same terms as J

Ways to use getOneParameterFamily:
==================================

  * "getOneParameterFamily(Ideal,Ideal,Matrix,ZZ)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2274:0.

getParameterFamily -- Compute the parametric family which uses the same terms as J
**********************************************************************************

  * Usage:
        (base,family) = getParameterFamily J
  * Inputs:
      * J, an ideal (Macaulay2Doc), of a one-parameter smoothing
        family of a semigroup ideal
  * Outputs:
      * base, an ideal (Macaulay2Doc), of flatteness relations
      * family, a matrix (Macaulay2Doc), a matrix containing the
        generators of the parametric family

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

We compute the flat family of ideals which uses the same terms as J. The ideal
base contains the flatness relations for the coefficients of the family.

+-----------------------------------------------------------------------------+
|i1 : R=QQ[x_0..x_1, x_3, x_5..x_6, z, Degrees => {7..8, 17, 19..20, 1}]      |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : J=ideal(x_1^3-x_0*x_3+x_1*z^16+x_0*z^17,x_1*x_5-x_0*x_6+x_0^2*z^13+x_1*z|
|   +x_0^2*z^14-x_1*z^20,x_1^2*x_3-x_0^2*x_5-x_5*z^14+x_3*z^16+x_1^2*z^17+x_0*|
|   +x_0^3*z^13-x_6*z^14+x_1^2*z^18+2*x_0*x_1*z^19-x_0^2*z^20+x_0*z^27-2*z^34,|
|   6*z^16-x_5*z^17+x_3*z^19-x_1^2*z^20+x_0*z^29-2*z^36,x_0^3*x_1^2-x_3*x_6+x_|
|   16+x_6*z^17-x_3*z^20+z^37,x_0^3*x_3-x_5^2+x_0^2*x_1*z^16+x_0^3*z^17+x_6*z^|
|   5*x_6+x_0*x_5*z^13+x_0*x_1^2*z^16+x_0^2*x_1*z^17+x_0^3*z^18+x_6*z^19-x_5*z|
|   z^13+x_0*x_5*z^14+x_0^3*z^19-2*x_6*z^20-x_0^2*z^26+3*x_0*z^33-z^40)       |
|                                                                             |
|             3             16      17                 2 13      19      20   |
|o2 = ideal (x  - x x  + x z   + x z  , x x  - x x  + x z   + x z   - x z  ,  |
|             1    0 3    1       0      1 5    0 6    0       1       0      |
|  4               13    2 14      20   2      2        14      16    2 17    |
| x  - x x  + x x z   + x z   - x z  , x x  - x x  - x z   + x z   + x z      |
|  0    1 6    0 1       0       1      1 3    0 5    5       3       1       |
|        18    2 19   2    2      3 13      14    2 18         19    2 20     |
| + x x z   + x z  , x  - x x  + x z   - x z   + x z   + 2x x z   - x z       |
|    0 1       0      3    0 6    0       6       1        0 1       0        |
|      27     34          2        2 13      16      17      19    2 20       |
| + x z   - 2z  , x x  - x x  + x x z   - x z   - x z   + x z   - x z   +     |
|    0             3 5    1 6    0 1       6       5       3       1          |
|    29     36   3 2               13      2 14    3 16      17      20       |
| x z   - 2z  , x x  - x x  + x x z   + x x z   + x z   + x z   - x z   +     |
|  0             0 1    3 6    0 3       0 1       0       6       3          |
|  37   3      2    2   16    3 17      18      31     38   2                 |
| z  , x x  - x  + x x z   + x z   + x z   - x z   + 2z  , x x x  - x x  +    |
|       0 3    5    0 1       0       6       0             0 1 3    5 6      |
|      13      2 16    2   17    3 18      19      20    39   3      2        |
| x x z   + x x z   + x x z   + x z   + x z   - x z   + z  , x x  - x  +      |
|  0 5       0 1       0 1       0       6       5            0 5    6        |
|       13        14    3 19       20    2 26       33    40                  |
| 2x x z   + x x z   + x z   - 2x z   - x z   + 3x z   - z  )                 |
|   0 6       0 5       0        6       0        0                           |
|                                                                             |
|o2 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^19-x_0*z^20,x_0^4-x_1*x_6+x_0*x_1*z^13                                      |
|x_1*z^18+x_0^2*z^19,x_3^2-x_0^2*x_6                                          |
|x_3*x_5-x_1^2*x_6+x_0*x_1^2*z^13-x_                                          |
|0*x_3*z^13+x_0*x_1^2*z^14+x_0^3*z^                                           |
|18-x_0*z^31+2*z^38,x_0^2*x_1*x_3-x_                                          |
|^20+z^39,x_0^3*x_5-x_6^2+2*x_0*x_6*                                          |
+-----------------------------------------------------------------------------+
|i3 : L=flatten drop(degrees R,-1)                                            |
|                                                                             |
|o3 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : (base,family)=getParameterFamily J;                                     |
+-----------------------------------------------------------------------------+
|i5 : numgens base                                                            |
|                                                                             |
|o5 = 4                                                                       |
+-----------------------------------------------------------------------------+
|i6 : cbase=decompose base                                                    |
|                                                                             |
|                                                                             |
|o6 = {ideal (a      , a      , a      ), ideal (a      a       - a      a    |
|             {1, 3}   {2, 3}   {0, 2}           {0, 2} {2, 3}    {0, 1} {1,  |
|                                       2                                     |
|   , a      a       - a      a      , a       - a      a      , a            |
| 3}   {3, 4} {2, 3}    {1, 2} {1, 3}   {0, 2}    {1, 2} {1, 3}   {0,         |
|   a       - a      a      , a      a       - a      a      )}               |
| 1} {0, 2}    {1, 2} {2, 3}   {3, 4} {0, 1}    {1, 2} {0, 2}                 |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : J_0                                                                     |
|                                                                             |
|      3             16      17                                               |
|o7 = x  - x x  + x z   + x z                                                 |
|      1    0 3    1       0                                                  |
|                                                                             |
|o7 : R                                                                       |
+-----------------------------------------------------------------------------+
|i8 : family_(0,0)                                                            |
|                                                                             |
|     3                                                                       |
|o8 = x  - x x  + x a       + x a                                             |
|     1    0 3    0 {0, 1}    1 {0, 2}                                        |
|                                                                             |
|o8 : QQ[x ..x , x , x ..x , a      , a      , a      , a      , a      , a   |
|        0   1   3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5, 0}   {4, |
|-----------------------------------------------------------------------------|
|   , a      , a      , a      , a      , a      , a      , a      , a      , |
|0}   {9, 1}   {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}   {6, 6}   |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
|{5, 5}   {4, 3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, 4}   {3,  |
|-----------------------------------------------------------------------------|
|   , a      , a      , a      , a      , a      , a       , a      , a      ,|
|3}   {1, 2}   {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}   {6, 8}  |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a       , a       , a      , a      , a      , a  |
|{5, 7}   {3, 5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}   {3, 6}   {0,|
|-----------------------------------------------------------------------------|
|   , a       , a       , a      , a      , a      , a       , a       , a    |
|2}   {9, 14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}   {8, 14}   {6,  |
|-----------------------------------------------------------------------------|
|    , a       , a      , a      , a      ]                                   |
|12}   {5, 11}   {4, 9}   {2, 4}   {1, 3}                                     |
+-----------------------------------------------------------------------------+
|i9 : J_*/size                                                                |
|                                                                             |
|o9 = {4, 5, 5, 7, 9, 9, 8, 7, 9, 9}                                          |
|                                                                             |
|o9 : List                                                                    |
+-----------------------------------------------------------------------------+
|i10 : (ideal family)_*/size                                                  |
|                                                                             |
|o10 = {4, 5, 5, 7, 10, 10, 8, 8, 9, 10}                                      |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+
|i11 : J_4                                                                    |
|                                                                             |
|      2    2      3 13      14    2 18         19    2 20      27     34     |
|o11 = x  - x x  + x z   - x z   + x z   + 2x x z   - x z   + x z   - 2z      |
|      3    0 6    0       6       1        0 1       0       0               |
|                                                                             |
|o11 : R                                                                      |
+-----------------------------------------------------------------------------+
|i12 : family_(0,4)                                                           |
|                                                                             |
|      2    2      2                          2           2                   |
|o12 = x  - x x  + x a       + 2x x a       + x a       - a       - x a       |
|      3    0 6    0 {1, 1}     0 1 {1, 2}    1 {3, 4}    {0, 1}    6 {2, 3}  |
|                      3                                                      |
|  + a      a       + x a       + x a      a                                  |
|     {1, 1} {2, 3}    0 {1, 3}    0 {2, 3} {1, 3}                            |
|                                                                             |
|o12 : QQ[x ..x , x , x ..x , a      , a      , a      , a      , a      , a  |
|         0   1   3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5, 0}   {4,|
|-----------------------------------------------------------------------------|
|   , a      , a      , a      , a      , a      , a      , a      , a      , |
|0}   {9, 1}   {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}   {6, 6}   |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
|{5, 5}   {4, 3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, 4}   {3,  |
|-----------------------------------------------------------------------------|
|   , a      , a      , a      , a      , a      , a       , a      , a      ,|
|3}   {1, 2}   {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}   {6, 8}  |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a       , a       , a      , a      , a      , a  |
|{5, 7}   {3, 5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}   {3, 6}   {0,|
|-----------------------------------------------------------------------------|
|   , a       , a       , a      , a      , a      , a       , a       , a    |
|2}   {9, 14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}   {8, 14}   {6,  |
|-----------------------------------------------------------------------------|
|    , a       , a      , a      , a      ]                                   |
|12}   {5, 11}   {4, 9}   {2, 4}   {1, 3}                                     |
+-----------------------------------------------------------------------------+
|i13 : support family                                                         |
|                                                                             |
|o13 = {x , x , x , x , x , a      , a      , a      , a      , a      , a    |
|       0   1   3   5   6   {1, 1}   {1, 2}   {3, 4}   {0, 1}   {0, 2}   {2,  |
|    , a      }                                                               |
|  3}   {1, 3}                                                                |
|                                                                             |
|o13 : List                                                                   |
+-----------------------------------------------------------------------------+
|i14 : support family/degree                                                  |
|                                                                             |
|o14 = {{7}, {8}, {17}, {19}, {20}, {20}, {19}, {18}, {17}, {16}, {14}, {13}} |
|                                                                             |
|o14 : List                                                                   |
+-----------------------------------------------------------------------------+

See also
========

  * improveFamily -- Find a 1-parameter smoothing family
    with perhaps smaller number of terms and coefficients
  * getOneParameterFamily -- Compute a one
    parameter smoothing family

Ways to use getParameterFamily:
===============================

  * "getParameterFamily(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2162:0.

getRangeOfOneParameterFamily -- Compute the range of degrees of a one parameter family
**************************************************************************************

  * Usage:
        range = getRangeOfOneParameterFamily J
  * Inputs:
      * J, an ideal (Macaulay2Doc), of a one-parameter smoothing
        family of a semigroup ideal
  * Outputs:
      * range, a list (Macaulay2Doc), range of degrees of the
        1-parameter family

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

We compute range of degrees of a one parameter family

+--------------+
|i1 : L={5,6,8}|
|              |
|o1 = {5, 6, 8}|
|              |
|o1 : List     |
+--------------+

See also
========

  * getParameterFamily -- Compute the parametric
    family which uses the same terms as J

Ways to use getRangeOfOneParameterFamily:
=========================================

  * "getRangeOfOneParameterFamily(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2301:0.

getSmoothingFamily -- Get a smoothing family for the semigroup L
****************************************************************

  * Usage:
        (smooth,fib)=getSmoothingFamily(L,b)
        (smooth,fib,comps)=getSmoothingFamily(L,range)
  * Inputs:
      * L, a list (Macaulay2Doc), list of generators of a
        semigroups
      * bound, an integer (Macaulay2Doc), degree bound
      * range, a list (Macaulay2Doc), range of degrees
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10000019
      * CoeffBound => ..., default value 10000
      * CoeffSize => ..., default value 1
      * Verbose => ..., default value 0
  * Outputs:
      * smooth, a Boolean value (Macaulay2Doc), true is a
        smoothing family was found
      * fib, an ideal (Macaulay2Doc), ideal of a one-parameter
        smoothing family or null
      * comps, a list (Macaulay2Doc), list of component numbers of
        the smoothing components discovered

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

We first test whether by the bound b or the range of degrees the restricted
unfolding leads to a smoothing family over a finite field. If yes and with
Verbose>0 then the degrees of the parameters of the parameters of the smoothing
family are printed. In a second step we try to lift the example to
characteristic 0 and check smoothness again.

+-----------------------------------------------------------------------------+
|i1 : L=(toDoList 8)_0                                                        |
|                                                                             |
|o1 = {6, 7, 9, 17}                                                           |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : (smooth,fib)=getSmoothingFamily(L,12,Verbose=>1)                        |
|    number of components = 1, codimension of components = {0}                |
|    smoothing components numbers = {}                                        |
|                                                                             |
|o2 = (false, )                                                               |
|                                                                             |
|o2 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i3 : (smooth,fib)=getSmoothingFamily(L,11,Verbose=>1)                        |
|number of components = 2, codimension of components = {1, 2}                 |
|semigroup = {6, 7, 9, 17}                                                    |
|dim and degree singF = (0, 4)                                                |
|smoothing components numbers = {1}                                           |
|                                                                             |
|                    3    2      12   3    2        15   2               17   |
|o3 = (true, ideal (x  - x  - x z  , x  - x x  - x z  , x x  - x x  - x z  ,  |
|                0    3    0      1    0 3    0      1 3    0 5    0          |
|    2             15      17   2 2           2 12      17     3    2         |
| x x  - x x  + x z   - x z  , x x  - x x  - x z   - x z  , x x  - x  +       |
|  0 3    1 5    3       1      0 1    3 5    1       3      1 3    5         |
|  2   15       17      27    34                                              |
| x x z   - 2x z   - x z   - z  ))                                            |
|  0 1        5       1                                                       |
|                                                                             |
|o3 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i4 : range=makeRange(L,{4})                                                  |
|                                                                             |
|o4 = {4, 8, 12, 16, 20, 24, 28, 32}                                          |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+
|i5 : (smooth,fib, comps)=getSmoothingFamily(L,range,Verbose=>1)              |
|time to decompose J1 :                                                       |
|                                                                             |
|component number = 0                                                         |
|                                                                             |
|component number = 1                                                         |
|deformation weights = {{12}, {8}, {8}, {4}, {4}, {4}}                        |
|semigroup = {6, 7, 9, 17}                                                    |
|dim and degree singF = (0, 8)                                                |
|smoothing components numbers = {1}                                           |
|flat = true                                                                  |
|                                                                             |
|                    3    2    2 4      12   3    2        4        8      12 |
|o5 = (true, ideal (x  - x  - x z  + x z  , x  - x x  - x z  - x x z  - x z  ,|
|                0    3    1      0      1    0 3    5      0 1      3        |
|       2             2   4        8      16     2                8    2 12   |
|      x x  - x x  - x x z  - x x z  - x z  , x x  - x x  - 2x x z  - x z  ,  |
|       1 3    0 5    0 1      0 3      1      0 3    1 5     1 3      0      |
|      2 2                  4     2 8      20     3    2          4         8 |
|     x x  - x x  - 2x x x z  - 2x z  + x z  , x x  - x  - x x x z  - 3x x z  |
|      0 1    3 5     0 1 3       3      0      1 3    5    0 1 5       3 5   |
|              12     2 16      28                                            |
|    - 3x x x z   - 3x z   + x z  ), {1})                                     |
|        0 1 3        3       0                                               |
|                                                                             |
|o5 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i6 : (smooth,fib, comps)=getSmoothingFamily(L,range,Verbose=>2)              |
|   time to decompose J1 :                                                    |
|   number of components = 2, codimension of components = {2, 1}              |
|                                                                             |
|   component number = 0                                                      |
|                                                                             |
|   component number = 1                                                      |
|   deformation weights = {{12}, {8}, {8}, {4}, {4}, {4}}                     |
|   codim J3 = 0, numgens J3 = 0                                              |
|   semigroup = {6, 7, 9, 17}                                                 |
|   dim and degree singF = (0, 8)                                             |
|   dim and degree singF = (0, 8)                                             |
|   smoothing components numbers = {1}                                        |
|   flat = true                                                               |
|                                                                             |
|                    3    2    2 4      12   3    2        4        8      12 |
|o6 = (true, ideal (x  - x  - x z  + x z  , x  - x x  - x z  - x x z  - x z  ,|
|                0    3    1      0      1    0 3    5      0 1      3        |
|      2             2   4        8      16     2                8    2 12    |
|     x x  - x x  - x x z  - x x z  - x z  , x x  - x x  - 2x x z  - x z  ,   |
|      1 3    0 5    0 1      0 3      1      0 3    1 5     1 3      0       |
|      2 2                  4     2 8      20     3    2          4         8 |
|     x x  - x x  - 2x x x z  - 2x z  + x z  , x x  - x  - x x x z  - 3x x z  |
|      0 1    3 5     0 1 3       3      0      1 3    5    0 1 5       3 5   |
|              12     2 16      28                                            |
|    - 3x x x z   - 3x z   + x z  ), {1})                                     |
|        0 1 3        3       0                                               |
|                                                                             |
|o6 : Sequence                                                                |
+-----------------------------------------------------------------------------+

The intermediate output is explained in smoothnessWithReductions.

See also
========

  * makeRange -- Make a range of degrees for
    getSmoothingFamily
  * smoothnessWithReductions -- Check
    smoothness by using reductions to points

Ways to use getSmoothingFamily:
===============================

  * "getSmoothingFamily(List,List)"
  * "getSmoothingFamily(List,ZZ)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3175:0.

getSmoothingFamilyWithVersalDeformation -- Get a smoothing family using versal deformations
*******************************************************************************************

  * Usage:
        (worked,fibz)=getSmoothingFamilyWithVersalDeformation(L)
        L:List
        list of generators of a semigroup
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10000019
      * Bound => ..., default value 1
      * CoeffBound => ..., default value 10000
      * CoeffSize => ..., default value 1
      * HighestOrder1 => ..., default value 20
      * Verbose => ..., default value 0
  * Outputs:
      * worked, a Boolean value (Macaulay2Doc), true if
        successful
      * fibz, an ideal (Macaulay2Doc), the ideal of a 1-parameter
        smoothing family defined over QQ

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

Using the package VersalDeformations we try compute a smoothing family

+-----------------------------------------------------------------------------+
|i1 : L = {5,7,11}                                                            |
|                                                                             |
|o1 = {5, 7, 11}                                                              |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : (worked,fibz)=getSmoothingFamilyWithVersalDeformation(L,Verbose=>2,Bound|
|Calculating first order relations                                            |
|Calculating standard expressions for obstructions                            |
|Starting lifting                                                             |
|Order 2                                                                      |
|Order 3                                                                      |
|Order 4                                                                      |
|Solution is polynomial                                                       |
| -- .304668s elapsed                                                         |
|                                                                             |
|                    3    2      2   4        5    3 6    2 7        9      10|
|o2 = (true, ideal (x  - x x  - x x z  - x x z  - x z  - x z  + x x z  - x z  |
|                    2    0 1    0 2      0 1      0      2      0 2      1   |
|     ------------------------------------------------------------------------|
|        2 11      14       16     21   3      2        4    2   5        6   |
|     - x z   + x z   - 3x z   - 2z  , x x  - x  - x x z  - x x z  - x x z  - |
|        0       2        0             0 2    1    2 1      0 2      0 1     |
|     ------------------------------------------------------------------------|
|      3 7    2 8         10    2 12      15       17     22   5    2         |
|     x z  - x z  - 2x x z   + x z   - x z   + 2x z   + 2z  , x  - x x  -     |
|      0      2       0 2       0       2        0             0    2 1       |
|     ------------------------------------------------------------------------|
|      2   8         9     3 10        13       14     2 15      18       20  |
|     x x z  - 2x x z  - 2x z   - x x z   - 2x z   - 5x z   - x z   - 4x z   -|
|      0 2       0 1       0       0 2        1        0       2        0     |
|     ------------------------------------------------------------------------|
|       25                                                                    |
|     2z  ))                                                                  |
|                                                                             |
|o2 : Sequence                                                                |
|-----------------------------------------------------------------------------|
|=>4)                                                                         |
+-----------------------------------------------------------------------------+

Caveat
======

If the versal deformation computation does finished with "Solution is
polynomial" one needs to increase the default value HighestOrder1=>20 to a
larger number.

Ways to use getSmoothingFamilyWithVersalDeformation:
====================================================

  * "getSmoothingFamilyWithVersalDeformation(List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3015:0.

give1683Format -- Does the semigroup ideal of L has a resolution with total betti numbers 1,6,8,3?
**************************************************************************************************

  * Usage:
        answer = give1683Format L
        answer = give1683Format(a,b,c,d)
        goodCases = give1683Format(r1,r2,r3,r4)
  * Inputs:
      * L, a list (Macaulay2Doc), generators of a semigroup with 4
        generators
      * a, an integer (Macaulay2Doc),
      * b, an integer (Macaulay2Doc),
      * c, an integer (Macaulay2Doc),
      * d, an integer (Macaulay2Doc), test the semigrups generated by
        {a,a+b,a+b+c,a+b+c+d}
      * r1, a list (Macaulay2Doc),
      * r2, a list (Macaulay2Doc),
      * r3, a list (Macaulay2Doc),
      * r4, a list (Macaulay2Doc), lists of integer a in r1,...,d
        in r4 to be tested
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), the answer
      * goodCases, a list (Macaulay2Doc), list of semigroups which
        passed the test

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

prints the degree matrices of a complex

+-----------------------------------------------------------------------------+
|i1 : L = {6,9,13,16}                                                         |
|                                                                             |
|o1 = {6, 9, 13, 16}                                                          |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I = semigroupIdeal L                                                    |
|                                                                             |
|             3    2                2              2    2   2 3    3     4    |
|o2 = ideal (x  - x , x x  - x x , x x  - x x , x x  - x , x x  - x , x x  -  |
|             0    3   3 1    0 4   0 1    3 4   0 1    4   0 3    1   0 3    |
|     ------------------------------------------------------------------------|
|      2                                                                      |
|     x x )                                                                   |
|      1 4                                                                    |
|                                                                             |
|                ZZ                                                           |
|o2 : Ideal of -----[x , x , x , x ]                                          |
|              10007  0   3   1   4                                           |
+-----------------------------------------------------------------------------+
|i3 : give1683Format L                                                        |
|                                                                             |
|o3 = true                                                                    |
+-----------------------------------------------------------------------------+
|i4 : give1683Format(6,3,4,3)                                                 |
|                                                                             |
|o4 = true                                                                    |
+-----------------------------------------------------------------------------+
|i5 : r1={6},r2={3,9},r3={2,4},r4={3}                                         |
|                                                                             |
|o5 = ({6}, {3, 9}, {2, 4}, {3})                                              |
|                                                                             |
|o5 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i6 : give1683Format(r1,r2,r3,r4)                                             |
|                                                                             |
|o6 = {{6, 9, 11, 14}, {6, 9, 13, 16}, {6, 15, 17, 20}, {6, 15, 19, 22}}      |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+

Ways to use give1683Format:
===========================

  * "give1683Format(List)"
  * "give1683Format(List,List,List,List)"
  * "give1683Format(ZZ,ZZ,ZZ,ZZ)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3488:0.

HighestOrder1 -- Option keys for various functions
**************************************************

Functions with optional argument named HighestOrder1:
=====================================================

  * "collectWithVersalDeformations(...,HighestOrder1=>...)" -- see
    collectWithVersalDeformations, -- Collect
    1-parameter families the using versal deformations
  * "getSmoothingFamilyWithVersalDeformation(...,HighestOrder1=>...)" -- see
    getSmoothingFamilyWithVersalDeformation,
    -- Get a smoothing family using
    versal deformations

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

The object HighestOrder1, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3301:0.

hilbertBurchMatrices -- Check the depth conditions for the exactness of the 1,4,4,1 subcomplex of the 1,6,8,3 subcomplex
************************************************************************************************************************

  * Usage:
        A = hilbertBurchMatrices L
        answer = hilbertBurchConditions L
        d = depthCondition1 L
        answer = hasExactSubcomplex L
  * Inputs:
      * L, a list (Macaulay2Doc), generators of a semigroup with 4
        generators
  * Outputs:
      * A, a list (Macaulay2Doc), a List of Hilbert Burch
        submatrices of the 2nd syzygy matrix
      * answer, a Boolean value (Macaulay2Doc), the answer d:ZZ
        the depth of the 2x2 minors of the 2x4 submatrix of the 3rd syzygy
        matrix

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

Exactness of the 1,4,4,1 subcomplex follows from depth condition on the
Hilbert-Burch matrices or if the minors of the 4x2 submatrix of the 3rd syzygy
matrix have depth >=2

+--------------------------------------------------------------------+
|i1 : L = {6,9,13,16}                                                |
|                                                                    |
|o1 = {6, 9, 13, 16}                                                 |
|                                                                    |
|o1 : List                                                           |
+--------------------------------------------------------------------+
|i2 : satisfiesDegreeCondition1 L and satisfiesDegreeCondition2 L    |
|                                                                    |
|o2 = true                                                           |
+--------------------------------------------------------------------+
|i3 : hilbertBurchMatrices L                                         |
|                                                                    |
|o3 = {{22} | -x_4 -x_0x_1 0    0    |, {18} | -x_1 -x_4   0   0   |}|
|      {25} | -x_1 -x_4    0    0    |  {22} | -x_3 -x_0^2 0   0   | |
|      {32} | x_0  x_3     0    0    |  {25} | x_0  x_3    0   0   | |
|      {18} | 0    0       -x_1 -x_4 |  {32} | 0    0      x_0 x_3 | |
|                                                                    |
|o3 : List                                                           |
+--------------------------------------------------------------------+
|i4 : hilbertBurchConditions L                                       |
|                                                                    |
|o4 = true                                                           |
+--------------------------------------------------------------------+
|i5 : depthCondition1 L                                              |
|                                                                    |
|o5 = 2                                                              |
+--------------------------------------------------------------------+
|i6 : hasExactSubcomplex L                                           |
|                                                                    |
|o6 = true                                                           |
+--------------------------------------------------------------------+

The degree conditions are satisfied.

Ways to use hilbertBurchMatrices:
=================================

  * "hilbertBurchMatrices(List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3444:0.

HowToStartCollecting -- How to start collecting
***********************************************

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

We have installed two methods to start to collect smoothing families for a list
LL of semigroups.

Collecting
==========

  * collectByBound -- Collect 1-parameter families
    filtered by bound (or congruences or range)
  * collectWithVersalDeformations, --
    Collect 1-parameter families the using versal deformations
  * appendFamily -- Append a one-parameter smoothing
    family to a data file

 In both cases we have two files 'doneLL' and 'doneData' which contains the
cases already done. The first file 'doneLL' is a list of semigroups where we
store all semigroups in our collecting process where we found a smoothing
one-parameter family over QQ. The second file 'doneData' is a .dbm file
containing a data base of rings and ideals. To get these data we use:

Communicating with the hard disk
================================

X='doneLL'

Y='doneData.dbm'

openOutAppend X

X << ','

X<<close;

doneLL=getFromDisk X;#doneLL

Y=openDatabase Xdbm

#keys Y

keys Y

listOfIdeals=apply(doneLL,L->(R=value Y#(toString L|'ring'); I=value
(Y#(toString L|ideal))));

close Y

Continue collecting
===================

LL=toDoList 13

b=12;collectByBound(LL,b,'doneLL','dataData.dbm'

or with

collectWithVersalDeformations(LL,b,'doneLL','dataData.dbm'

one can continue the collecting. One can interrupt the collecting any time, and
continue later without losing data.

Replacing quotes
================

 In the above the simple quotes ' have to be replaced by the double quotes,
which indicate the begin and end of a string

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

The object HowToStartCollecting, is a symbol (Macaulay2Doc).

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1427:0.

improveFamily -- Find a 1-parameter smoothing family with perhaps smaller number of terms and coefficients
**********************************************************************************************************

  * Usage:
        J1 = improveFamily J
  * Inputs:
      * J, an ideal (Macaulay2Doc), a one-parameter smoothing
        family of a semigroup ideal
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value 0
  * Outputs:
      * J, an ideal (Macaulay2Doc), a one-parameter smoothing
        family of a semigroup ideal

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

We first compute the flat family of ideals which uses the same terms as J using
getParameterFamily. We then choose a point in a smoothing component of the base
which uses hopefully fewer terms and smaller coefficients by using
getOneParameterFamily

+-----------------------------------------------------------------------------+
|i1 : R=QQ[x_0..x_1, x_3, x_5..x_6, z, Degrees => {7..8, 17, 19..20, 1}]      |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : J=ideal(x_1^3-x_0*x_3+x_1*z^16+x_0*z^17,x_1*x_5-x_0*x_6+x_0^2*z^13+x_1*z|
|   +x_0^2*z^14-x_1*z^20,x_1^2*x_3-x_0^2*x_5-x_5*z^14+x_3*z^16+x_1^2*z^17+x_0*|
|   +x_0^3*z^13-x_6*z^14+x_1^2*z^18+2*x_0*x_1*z^19-x_0^2*z^20+x_0*z^27-2*z^34,|
|   6*z^16-x_5*z^17+x_3*z^19-x_1^2*z^20+x_0*z^29-2*z^36,x_0^3*x_1^2-x_3*x_6+x_|
|   16+x_6*z^17-x_3*z^20+z^37,x_0^3*x_3-x_5^2+x_0^2*x_1*z^16+x_0^3*z^17+x_6*z^|
|   5*x_6+x_0*x_5*z^13+x_0*x_1^2*z^16+x_0^2*x_1*z^17+x_0^3*z^18+x_6*z^19-x_5*z|
|   z^13+x_0*x_5*z^14+x_0^3*z^19-2*x_6*z^20-x_0^2*z^26+3*x_0*z^33-z^40)       |
|                                                                             |
|             3             16      17                 2 13      19      20   |
|o2 = ideal (x  - x x  + x z   + x z  , x x  - x x  + x z   + x z   - x z  ,  |
|             1    0 3    1       0      1 5    0 6    0       1       0      |
|  4               13    2 14      20   2      2        14      16    2 17    |
| x  - x x  + x x z   + x z   - x z  , x x  - x x  - x z   + x z   + x z      |
|  0    1 6    0 1       0       1      1 3    0 5    5       3       1       |
|        18    2 19   2    2      3 13      14    2 18         19    2 20     |
| + x x z   + x z  , x  - x x  + x z   - x z   + x z   + 2x x z   - x z       |
|    0 1       0      3    0 6    0       6       1        0 1       0        |
|      27     34          2        2 13      16      17      19    2 20       |
| + x z   - 2z  , x x  - x x  + x x z   - x z   - x z   + x z   - x z   +     |
|    0             3 5    1 6    0 1       6       5       3       1          |
|    29     36   3 2               13      2 14    3 16      17      20       |
| x z   - 2z  , x x  - x x  + x x z   + x x z   + x z   + x z   - x z   +     |
|  0             0 1    3 6    0 3       0 1       0       6       3          |
|  37   3      2    2   16    3 17      18      31     38   2                 |
| z  , x x  - x  + x x z   + x z   + x z   - x z   + 2z  , x x x  - x x  +    |
|       0 3    5    0 1       0       6       0             0 1 3    5 6      |
|      13      2 16    2   17    3 18      19      20    39   3      2        |
| x x z   + x x z   + x x z   + x z   + x z   - x z   + z  , x x  - x  +      |
|  0 5       0 1       0 1       0       6       5            0 5    6        |
|       13        14    3 19       20    2 26       33    40                  |
| 2x x z   + x x z   + x z   - 2x z   - x z   + 3x z   - z  )                 |
|   0 6       0 5       0        6       0        0                           |
|                                                                             |
|o2 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^19-x_0*z^20,x_0^4-x_1*x_6+x_0*x_1*z^13                                      |
|x_1*z^18+x_0^2*z^19,x_3^2-x_0^2*x_6                                          |
|x_3*x_5-x_1^2*x_6+x_0*x_1^2*z^13-x_                                          |
|0*x_3*z^13+x_0*x_1^2*z^14+x_0^3*z^                                           |
|18-x_0*z^31+2*z^38,x_0^2*x_1*x_3-x_                                          |
|^20+z^39,x_0^3*x_5-x_6^2+2*x_0*x_6*                                          |
+-----------------------------------------------------------------------------+
|i3 : L=flatten drop(degrees R,-1)                                            |
|                                                                             |
|o3 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : J1=improveFamily(J)                                                     |
|                                                                             |
|#pos = 1, #posa = 1                                                          |
|#pos = 2, #posa = 2                                                          |
|                                                                             |
|             3             16      17                 2 13      19   4       |
|o4 = ideal (x  - x x  + x z   + x z  , x x  - x x  + x z   + x z  , x  - x x |
|              1    0 3    1       0      1 5    0 6    0       1      0    1 |
|        13    2 14   2      2        14      16    2 17        18            |
| + x x z   + x z  , x x  - x x  - x z   + x z   + x z   + x x z   +          |
|    0 1       0      1 3    0 5    5       3       1       0 1               |
|  2 19   2    2      3 13      14    2 18         19      27    34           |
| x z  , x  - x x  + x z   - x z   + x z   + 2x x z   + x z   - z  , x x      |
|  0      3    0 6    0       6       1        0 1       0            3 5     |
|    2        2 13      16      17      19      29    36   3 2                |
| - x x  + x x z   - x z   - x z   + x z   + x z   - z  , x x  - x x  +       |
|    1 6    0 1       6       5       3       0            0 1    3 6         |
|      13      2 14    3 16      17   3      2    2   16    3 17      18      |
| x x z   + x x z   + x z   + x z  , x x  - x  + x x z   + x z   + x z   -    |
|  0 3       0 1       0       6      0 3    5    0 1       0       6         |
|    31    38   2                   13      2 16    2   17    3 18            |
| x z   + z  , x x x  - x x  + x x z   + x x z   + x x z   + x z   +          |
|  0            0 1 3    5 6    0 5       0 1       0 1       0               |
|    19   3      2         13        14    3 19    2 26      33               |
| x z  , x x  - x  + 2x x z   + x x z   + x z   - x z   + x z  )              |
|  6      0 5    6     0 6       0 5       0       0       0                  |
|                                                                             |
|o4 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|6                                                                            |
+-----------------------------------------------------------------------------+
|i5 : J_*/size                                                                |
|                                                                             |
|o5 = {4, 5, 5, 7, 9, 9, 8, 7, 9, 9}                                          |
|                                                                             |
|o5 : List                                                                    |
+-----------------------------------------------------------------------------+
|i6 : J1_*/size                                                               |
|                                                                             |
|o6 = {4, 4, 4, 7, 8, 8, 6, 7, 7, 7}                                          |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : (M,C)=coefficients gens J;                                              |
+-----------------------------------------------------------------------------+
|i8 : unique (entries flatten C)_0                                            |
|                                                                             |
|o8 = {0, 1, -1, 2, -2, 3}                                                    |
|                                                                             |
|o8 : List                                                                    |
+-----------------------------------------------------------------------------+
|i9 : (M1,C1)=coefficients gens J1;                                           |
+-----------------------------------------------------------------------------+
|i10 : unique (entries flatten C1)_0                                          |
|                                                                             |
|o10 = {0, 1, -1, 2}                                                          |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+

Caveat
======

It is possible that the function does not find a smooth fiber, which results in
a message that these example needs to be repeated.

See also
========

  * getParameterFamily -- Compute the parametric
    family which uses the same terms as J
  * getOneParameterFamily -- Compute a one
    parameter smoothing family

Ways to use improveFamily:
==========================

  * "improveFamily(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1983:0.

isSmoothingFamily -- Is the family a smoothing family?
******************************************************

  * Usage:
        smooth=isSmoothingFamily(L,I,family,base) -> (
  * Inputs:
      * L, a list (Macaulay2Doc), list of generators of a semigroup
      * I, an ideal (Macaulay2Doc), semigroup ideal (of L)
      * family, a matrix (Macaulay2Doc), a family over a finite
        large prime field
      * base, an ideal (Macaulay2Doc), ideal of flattening
        relations
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value 0
  * Outputs:
      * smooth, a Boolean value (Macaulay2Doc), true if the
        family is a smoothing family

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

Given a irreducible parametric family over a (large) finite field, the
functions picks a random point in the base and checks whether the corresponding
fiber is a smooth.

+-----------------------------------------------------------------------------+
|i1 : L={6,8,9,11}                                                            |
|                                                                             |
|o1 = {6, 8, 9, 11}                                                           |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 8                                                                       |
+-----------------------------------------------------------------------------+
|i3 : I=semigroupIdeal(L,"BaseField"=>ZZ/nextPrime 10^4);                     |
|                                                                             |
|               ZZ                                                            |
|o3 : Ideal of -----[x , x ..x , x ]                                          |
|              10007  0   2   3   5                                           |
+-----------------------------------------------------------------------------+
|i4 : (answer,J,comp)=testBound(L,2,Verbose=>1);                              |
+-----------------------------------------------------------------------------+
|i5 : (base1,family1)=getParameterFamily J;                                   |
+-----------------------------------------------------------------------------+
|i6 : family=family1%sub(base1,ring family1);                                 |
|                                                                             |
|                                                                             |
|o6 : Matrix (QQ[x , x ..x , x , a      , a      , a      , a      , a      , |
|                 0   2   3   5   {5, 0}   {4, 0}   {3, 0}   {5, 1}   {2, 0}  |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {5, 2}   {5, 3}   {4, 1}   {1, 0}   {5, 4}   {4, 2}   {3, 1}   {5, 5}   {3, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|2}   {2, 1}   {5, 6}   {4, 4}   {3, 3}   {5, 7}   {4, 5}   {2, 2}   {1, 1}   |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {5, 8}   {3, 4}   {2, 3}   {0, 1}   {5, 9}   {4, 6}   {3, 5}   {1, 2}   {5, |
|-----------------------------------------------------------------------------|
|                                                                             |
|   , a      , a      , a      , a       , a      , a      , a      , a      ,|
|10}   {4, 7}   {2, 4}   {0, 2}   {5, 11}   {4, 8}   {3, 6}   {2, 5}   {0, 3} |
|-----------------------------------------------------------------------------|
|                                                                             |
|a       , a      , a      , a       , a       , a      , a      , a      ,   |
| {5, 12}   {4, 9}   {3, 7}   {5, 13}   {4, 10}   {3, 8}   {2, 6}   {1, 5}    |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a       , a      , a      , a      , a       , a       , a       ,  |
| {0, 4}   {4, 11}   {3, 9}   {2, 7}   {0, 5}   {5, 15}   {4, 12}   {3, 10}   |
|-----------------------------------------------------------------------------|
|                                                             1               |
|a      , a      , a       , a       , a      , a      , a      ])  <--       |
| {2, 8}   {1, 6}   {4, 13}   {3, 11}   {2, 9}   {1, 7}   {0, 6}              |
|-----------------------------------------------------------------------------|
|                                                                             |
|(QQ[x , x ..x , x , a      , a      , a      , a      , a      , a      ,    |
|     0   2   3   5   {5, 0}   {4, 0}   {3, 0}   {5, 1}   {2, 0}   {5, 2}     |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {5, 3}   {4, 1}   {1, 0}   {5, 4}   {4, 2}   {3, 1}   {5, 5}   {3, 2}   {2, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|1}   {5, 6}   {4, 4}   {3, 3}   {5, 7}   {4, 5}   {2, 2}   {1, 1}   {5, 8}   |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a       , a   |
| {3, 4}   {2, 3}   {0, 1}   {5, 9}   {4, 6}   {3, 5}   {1, 2}   {5, 10}   {4,|
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a       , a      , a      , a      , a      , a       ,|
|7}   {2, 4}   {0, 2}   {5, 11}   {4, 8}   {3, 6}   {2, 5}   {0, 3}   {5, 12} |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a       , a       , a      , a      , a      , a      ,    |
| {4, 9}   {3, 7}   {5, 13}   {4, 10}   {3, 8}   {2, 6}   {1, 5}   {0, 4}     |
|-----------------------------------------------------------------------------|
|                                                                             |
|a       , a      , a      , a      , a       , a       , a       , a      ,  |
| {4, 11}   {3, 9}   {2, 7}   {0, 5}   {5, 15}   {4, 12}   {3, 10}   {2, 8}   |
|-----------------------------------------------------------------------------|
|                                                    6                        |
|a      , a       , a       , a      , a      , a      ])                     |
| {1, 6}   {4, 13}   {3, 11}   {2, 9}   {1, 7}   {0, 6}                       |
+-----------------------------------------------------------------------------+
|i7 : base=(decompose base1)_2;                                               |
|                                                                             |
|o7 : Ideal of QQ[a      , a      , a      , a      , a      , a      , a     |
|                  {4, 1}   {4, 2}   {4, 4}   {4, 5}   {0, 1}   {4, 6}   {4,  |
|-----------------------------------------------------------------------------|
|  , a      , a      , a      , a       , a      , a      , a      , a       ,|
|7}   {4, 8}   {0, 3}   {4, 9}   {4, 10}   {1, 5}   {0, 4}   {0, 5}   {4, 12} |
|-----------------------------------------------------------------------------|
|a      , a      , a      ]                                                   |
| {1, 6}   {1, 7}   {0, 6}                                                    |
+-----------------------------------------------------------------------------+
|i8 : kk=coefficientRing ring I;                                              |
+-----------------------------------------------------------------------------+
|i9 : SAFinite=kk[gens ring family,Degrees=>degrees ring family]              |
|                                                                             |
|o9 = SAFinite                                                                |
|                                                                             |
|o9 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i10 : AF=kk[gens ring base,Degrees=>degrees ring base]                       |
|                                                                             |
|o10 = AF                                                                     |
|                                                                             |
|o10 : PolynomialRing                                                         |
+-----------------------------------------------------------------------------+
|i11 : baseF=sub(base,AF)                                                     |
|                                                                             |
|                                                                             |
|o11 = ideal (2a       + 2a      a       - 2a      a       + a      a         |
|               {4, 4}     {4, 9} {0, 4}     {0, 3} {0, 5}    {0, 5} {4,      |
|                                                                             |
|     a       + a      a       a      , a      a       + a      a        +    |
|  12} {1, 6}    {0, 4} {4, 12} {1, 7}   {4, 7} {0, 4}    {0, 1} {4, 12}      |
|                                                      2                      |
|  2a      a      a        + a       a      a       - a      a       +        |
|    {0, 4} {0, 5} {4, 12}    {4, 10} {0, 4} {1, 7}    {0, 4} {1, 7}          |
|   2                                                                         |
|  a      a       - a      a       a      , a       - 2a      a       +       |
|   {0, 4} {0, 6}    {0, 3} {4, 12} {0, 6}   {4, 2}     {4, 8} {0, 3}         |
|    2                                                   2                    |
|  3a       + a      a       + a      a       + 2a      a       + a           |
|    {0, 3}    {4, 6} {0, 4}    {0, 1} {0, 5}     {0, 4} {0, 5}    {4,        |
|                                                 2       2                   |
|    a       a       - 3a      a       a       + a       a       - a          |
|  8} {4, 12} {1, 6}     {0, 3} {4, 12} {1, 6}    {4, 12} {1, 6}    {0,       |
|                                        2                                    |
|    a      a      , 2a      a       + 2a      a       - a      a             |
|  3} {0, 5} {0, 6}    {0, 1} {0, 4}     {0, 4} {0, 5}    {0, 3} {0,          |
|    a       + a      a      a      )                                         |
|  5} {1, 6}    {0, 3} {0, 4} {1, 7}                                          |
|                                                                             |
|o11 : Ideal of AF                                                            |
+-----------------------------------------------------------------------------+
|i12 : familyF=sub(family,SAFinite);                                          |
|                                                                             |
|                     1             6                                         |
|o12 : Matrix SAFinite  <-- SAFinite                                          |
+-----------------------------------------------------------------------------+
|i13 : isSmoothingFamily(L,I,familyF,baseF)                                   |
|                                                                             |
|o13 = true                                                                   |
+-----------------------------------------------------------------------------+

The intermediate output gives the codimension and number of generators of J3,
the final system of equations to solve, and the timing for finding a point.

See also
========

  * getParameterFamily -- Compute the parametric
    family which uses the same terms as J
  * testBound -- Test whether b is bound for the semigroup L
    and compute a 1-parameter smoothing family if yes

Ways to use isSmoothingFamily:
==============================

  * "isSmoothingFamily(List,Ideal,Matrix,Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2839:0.

makeRange -- Make a range of degrees for getSmoothingFamily
***********************************************************

  * Usage:
        range=makeRange(L,congruences)
  * Inputs:
      * L, a list (Macaulay2Doc), list of generators of a
        semigroups
      * congruences, a list (Macaulay2Doc), ;list of congruences
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value false
  * Outputs:
      * range, a list (Macaulay2Doc), a range of degrees

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

+-----------------------------------------------------------------------------+
|i1 : L={4,5,7}                                                               |
|                                                                             |
|o1 = {4, 5, 7}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : congruences={4,6}                                                       |
|                                                                             |
|o2 = {4, 6}                                                                  |
|                                                                             |
|o2 : List                                                                    |
+-----------------------------------------------------------------------------+
|i3 : range1=makeRange(L,{4,6})                                               |
|                                                                             |
|o3 = {4, 6, 8, 12}                                                           |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : elapsedTime (smooth,fib, comps)=getSmoothingFamily(L,range1)            |
| -- .760088s elapsed                                                         |
|                                                                             |
|                    3           2 4      8     2    2    2 6   3    2        |
|o4 = (true, ideal (x  - x x  - x z  - x z , x x  - x  - x z , x  - x x  +    |
|                    0    1 3    0      0     0 1    3    0     1    0 3      |
|     ------------------------------------------------------------------------|
|          4        6      8                                                  |
|     x x z  - x x z  + x z ), {0})                                           |
|      0 3      0 1      3                                                    |
|                                                                             |
|o4 : Sequence                                                                |
+-----------------------------------------------------------------------------+

The range are degrees r which congruent 0 mod d for some d in the list
congruences. To get a degree bound rane one can use the following.

+----------------------------------------------------------------------------+
|i5 : range2=drop(makeRange(L,{1}),9)                                        |
|                                                                            |
|o5 = {10, 11, 12, 13, 14, 15}                                               |
|                                                                            |
|o5 : List                                                                   |
+----------------------------------------------------------------------------+
|i6 : elapsedTime (smooth,fib, comps)=getSmoothingFamily(L,range2,Verbose=>1)|
|time to decompose J1 :                                                      |
| -- .000977053s elapsed                                                     |
|                                                                            |
|component number = 0                                                        |
|deformation weights = {{10}}                                                |
|semigroup = {4, 5, 7}                                                       |
| smoothing components numbers = {0}                                         |
| -- .00104354s elapsed                                                      |
|flat = true                                                                 |
| -- .671124s elapsed                                                        |
|                                                                            |
|                    3            2    2      10   3    2        10          |
|o6 = (true, ideal (x  - x x , x x  - x  - x z  , x  - x x  - x z  ), {0})   |
|                    0    1 3   0 1    3    0      1    0 3    1             |
|                                                                            |
|o6 : Sequence                                                               |
+----------------------------------------------------------------------------+

See also
========

  * makeRange -- Make a range of degrees for
    getSmoothingFamily
  * getSmoothingFamily -- Get a smoothing family for
    the semigroup L

Ways to use makeRange:
======================

  * "makeRange(List,List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3211:0.

makeUnfolding -- Makes the universal homogeneous unfolding of an ideal with positive degree parameters
******************************************************************************************************

  * Usage:
        (A,unfolding) = makeUnfolding I
        (A,unfolding) = makeUnfolding sgrp
  * Inputs:
      * I, an ideal (Macaulay2Doc),
      * sgrp, a list (Macaulay2Doc), generators of a semigroup
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10007
      * Verbose => ..., default value false
  * Outputs:
      * A, a ring (Macaulay2Doc), algebra of unfolding parameters
      * unfolding, a matrix (Macaulay2Doc), equations of the
        unfolding

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

Given a (quasi)homogeneous ideal in a ring S = kk[x_0..x_n] the function
creates a positively graded polynomial ring A = kk[a_{i,j}] and computes the
unfolding of I as an ideal of SA = kk[x_0..x_n, a_{i,j}]. This can be used as a
step in computing the semi-universal deformation of the affine cone defined by
I.

In the case of

makeUnfolding sgrp

the routine first forms the ideal of the semigroup ring, and applies
makeUnfolding to this.

+-----------------------------------------------------------------------------+
|i1 : L={4,5,7}                                                               |
|                                                                             |
|o1 = {4, 5, 7}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I := semigroupIdeal L;                                                  |
|                                                                             |
|                ZZ                                                           |
|o2 : Ideal of -----[x ..x , x ]                                              |
|              10007  0   1   3                                               |
+-----------------------------------------------------------------------------+
|i3 : (A,unfolding):= makeUnfolding I;                                        |
+-----------------------------------------------------------------------------+
|i4 : S=ring I                                                                |
|                                                                             |
|o4 = S                                                                       |
|                                                                             |
|o4 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i5 : fI=res I                                                                |
|                                                                             |
|      1      3      2                                                        |
|o5 = S  <-- S  <-- S                                                         |
|                                                                             |
|     0      1      2                                                         |
|                                                                             |
|o5 : Complex                                                                 |
+-----------------------------------------------------------------------------+
|i6 : degs=flatten (gens A/degree)                                            |
|                                                                             |
|o6 = {15, 14, 12, 11, 10, 10, 9, 8, 8, 7, 7, 7, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3,|
|     ------------------------------------------------------------------------|
|     3, 2, 2, 2, 1, 1, 1}                                                    |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : n=floor(max degs/2+3)                                                   |
|                                                                             |
|o7 = 10                                                                      |
+-----------------------------------------------------------------------------+
|i8 : restricted=ideal select(gens A, y-> (degree y)_0<n);                    |
|                                                                             |
|                ZZ                                                           |
|o8 : Ideal of -----[a      , a      , a      , a      , a      , a      ,    |
|              10007  {2, 0}   {1, 0}   {0, 0}   {2, 1}   {2, 2}   {1, 1}     |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {1, 2}   {2, 3}   {0, 1}   {2, 4}   {1, 3}   {0, 2}   {2, 5}   {1, 4}   {2, |
|-----------------------------------------------------------------------------|
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|6}   {1, 5}   {0, 3}   {2, 7}   {1, 6}   {0, 4}   {2, 8}   {1, 7}   {0, 5}   |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a       , a      , a      ]                       |
| {2, 9}   {1, 8}   {0, 6}   {2, 10}   {1, 9}   {0, 7}                        |
+-----------------------------------------------------------------------------+
|i9 : SA=ring unfolding                                                       |
|                                                                             |
|o9 = SA                                                                      |
|                                                                             |
|o9 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i10 : runfolding=unfolding%sub(restricted,SA);                               |
|                                                                             |
|               1       3                                                     |
|o10 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+
|i11 : transpose runfolding                                                   |
|                                                                             |
|o11 = {-12} | x_0^3-x_1x_3+a_{0, 0}                           |              |
|      {-14} | x_0x_1^2-x_3^2+a_{1, 0}+x_0a_{1, 1}             |              |
|      {-15} | x_1^3-x_0^2x_3+a_{2, 0}+x_0a_{2, 1}+x_1a_{2, 2} |              |
|                                                                             |
|               3       1                                                     |
|o11 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+
|i12 : J=flatteningRelations(I,A,runfolding);                                 |
|                                                                             |
|                 ZZ                                                          |
|o12 : Ideal of -----[a      , a      , a      , a      , a      , a      ,   |
|               10007  {2, 0}   {1, 0}   {0, 0}   {2, 1}   {2, 2}   {1, 1}    |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {1, 2}   {2, 3}   {0, 1}   {2, 4}   {1, 3}   {0, 2}   {2, 5}   {1, 4}   {2, |
|-----------------------------------------------------------------------------|
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|6}   {1, 5}   {0, 3}   {2, 7}   {1, 6}   {0, 4}   {2, 8}   {1, 7}   {0, 5}   |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a       , a      , a      ]                       |
| {2, 9}   {1, 8}   {0, 6}   {2, 10}   {1, 9}   {0, 7}                        |
+-----------------------------------------------------------------------------+
|i13 : cJ=decompose J;#cJ                                                     |
|                                                                             |
|o14 = 1                                                                      |
+-----------------------------------------------------------------------------+
|i15 : ideal prune (A/J)                                                      |
|                                                                             |
|o15 = ideal ()                                                               |
|                                                                             |
|                 ZZ                                                          |
|o15 : Ideal of -----[a      , a      , a      , a      , a      , a      ,   |
|               10007  {1, 1}   {1, 2}   {2, 3}   {0, 1}   {2, 4}   {1, 3}    |
|-----------------------------------------------------------------------------|
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {0, 2}   {2, 5}   {1, 4}   {2, 6}   {1, 5}   {0, 3}   {2, 7}   {1, 6}   {0, |
|-----------------------------------------------------------------------------|
|  , a      , a      , a      , a      , a      , a      , a       , a      , |
|4}   {2, 8}   {1, 7}   {0, 5}   {2, 9}   {1, 8}   {0, 6}   {2, 10}   {1, 9}  |
|-----------------------------------------------------------------------------|
|a      ]                                                                     |
| {0, 7}                                                                      |
+-----------------------------------------------------------------------------+
|i16 : family=runfolding%sub(J,SA);                                           |
|                                                                             |
|               1       3                                                     |
|o16 : Matrix SA  <-- SA                                                      |
+-----------------------------------------------------------------------------+

This is a flat family!

+----------------------------------------------------------------------------+
|i17 : betti res ideal family == betti res I                                 |
|                                                                            |
|o17 = true                                                                  |
+----------------------------------------------------------------------------+
|i18 : fiber=ideal sub(family,vars S|random(S^1,S^(numgens A)));             |
|                                                                            |
|o18 : Ideal of S                                                            |
+----------------------------------------------------------------------------+
|i19 : singFiber=radical ideal gens gb (fiber+minors(codim I,jacobian fiber))|
|                                                                            |
|o19 = ideal 1                                                               |
|                                                                            |
|o19 : Ideal of S                                                            |
+----------------------------------------------------------------------------+

Thus the family is a smoothing of S/I so the semigroup L in the example is a
Weierstrass semigroup by Pinkham's thesis.

See also
========

  * flatteningRelations -- Compute the flattening
    relations of an unfolding

Ways to use makeUnfolding:
==========================

  * "makeUnfolding(Ideal)"
  * "makeUnfolding(List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1532:0.

pruneFamily -- Present the family with fewest number of variables
*****************************************************************

  * Usage:
        (J1,family1)=pruneFamily(I,J,family)
  * Inputs:
      * I, an ideal (Macaulay2Doc), of a semigroup ring
      * J, an ideal (Macaulay2Doc), ideal of flattening relations
        of the family
      * family, a matrix (Macaulay2Doc), equations of the family
  * Optional inputs (Macaulay2Doc),:
      * Verbose => ..., default value false
  * Outputs:
      * J1, an ideal (Macaulay2Doc), pruned ideal of J
      * family1, a matrix (Macaulay2Doc), equations of reduced
        family

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

If a generator of J has a variable as lead term then this variable can be
removed from the presentation of (ring J/J). At the same time we remove this
variable from the equations of the family.

+-----------------------------------------------------------------------------+
|i1 : L={5,6,8,9}                                                             |
|                                                                             |
|o1 = {5, 6, 8, 9}                                                            |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 5                                                                       |
+-----------------------------------------------------------------------------+
|i3 : I=ideal semigroupRing(L,"BaseField"=>ZZ/nextPrime 10^4);                |
|                                                                             |
|                ZZ                                                           |
|o3 : Ideal of -----[x ..x , x ..x ]                                          |
|              10007  0   1   3   4                                           |
+-----------------------------------------------------------------------------+
|i4 : (A,unfolding)=makeUnfolding I;                                          |
+-----------------------------------------------------------------------------+
|i5 : b = genus L-1;                                                          |
+-----------------------------------------------------------------------------+
|i6 : as=apply(numgens I,i->a=drop(support unfolding_{i},#L));                |
+-----------------------------------------------------------------------------+
|i7 : rL=apply(#as,i->select(as_i,m->(degree m)_0> b));                       |
+-----------------------------------------------------------------------------+
|i8 : restrictionList=apply(flatten rL,m->sub(m,A));                          |
+-----------------------------------------------------------------------------+
|i9 : elapsedTime (J,family)=getFlatFamily(I,A,unfolding,restrictionList);    |
| -- .221967s elapsed                                                         |
+-----------------------------------------------------------------------------+
|i10 : leadTerm J                                                             |
|                                                                             |
|o10 = ideal (a      a      , a      a      , a      a      , a      a      , |
|              {1, 4} {2, 6}   {2, 4} {1, 4}   {2, 3} {1, 4}   {2, 4} {1, 3}  |
|      -----------------------------------------------------------------------|
|      a      a      , a      a      )                                        |
|       {2, 3} {1, 3}   {1, 2} {2, 3}                                         |
|                                                                             |
|o10 : Ideal of A                                                             |
+-----------------------------------------------------------------------------+
|i11 : (J1,family1)=pruneFamily(I,J,family);                                  |
+-----------------------------------------------------------------------------+
|i12 : leadTerm J1                                                            |
|                                                                             |
|o12 = ideal (a      a      , a      a      , a      a      , a      a      , |
|              {1, 4} {2, 6}   {2, 4} {1, 4}   {2, 3} {1, 4}   {2, 4} {1, 3}  |
|      -----------------------------------------------------------------------|
|      a      a      , a      a      )                                        |
|       {2, 3} {1, 3}   {1, 2} {2, 3}                                         |
|                                                                             |
|                 ZZ                                                          |
|o12 : Ideal of -----[a      , a      , a      , a      , a      , a      , a |
|               10007  {1, 1}   {1, 2}   {0, 1}   {2, 3}   {0, 2}   {2, 4}   {|
|-----------------------------------------------------------------------------|
|     , a      , a      , a      , a      , a      , a      ]                 |
|1, 3}   {2, 5}   {1, 4}   {0, 3}   {2, 6}   {1, 5}   {0, 4}                  |
+-----------------------------------------------------------------------------+

See also
========

  * makeUnfolding -- Makes the universal homogeneous
    unfolding of an ideal with positive degree parameters
  * flatteningRelations -- Compute the flattening
    relations of an unfolding
  * getFlatFamily -- Compute the flat family depending on
    a subset of parameters of the universal unfolding
  * prune (Macaulay2Doc) -- prune, e.g., compute a minimal
    presentation

Ways to use pruneFamily:
========================

  * "pruneFamily(Ideal,Ideal,Matrix)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1703:0.

restrictedUnfolding -- Compute a restricted unfolding
*****************************************************

  * Usage:
        (A,runfolding)=restrictedUnfolding(I,positionList)
  * Inputs:
      * I, an ideal (Macaulay2Doc), ideal of semigroup ring
      * positionList, a list (Macaulay2Doc), list of positions of
        the unfolding parameters to be used in the restricted unfolding
  * Outputs:
      * A, a ring (Macaulay2Doc), coordinate ring of the restricted
        unfolding
      * runfolding, a matrix (Macaulay2Doc), equations of the
        restricted unfolding

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

Given ideal c the functions adds random linear equations L to c to obtain
1-dimensional ideal. Since the ground field is finite, decompose the ideal c+L
will lead to a point with positive probability. Thus repeating will lead to
success.

+-----------------------------------------------------------------------------+
|i1 : L={5,6,8}                                                               |
|                                                                             |
|o1 = {5, 6, 8}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I=ideal semigroupRing(L,"BaseField"=>ZZ/nextPrime 10^4);                |
|                                                                             |
|                ZZ                                                           |
|o2 : Ideal of -----[x ..x , x ]                                              |
|              10007  0   1   3                                               |
+-----------------------------------------------------------------------------+
|i3 : (A,unfolding)=makeUnfolding I;                                          |
+-----------------------------------------------------------------------------+
|i4 : gens A/degree                                                           |
|                                                                             |
|o4 = {{20}, {18}, {16}, {15}, {14}, {13}, {12}, {12}, {11}, {10}, {10}, {10},|
|     ------------------------------------------------------------------------|
|     {9}, {8}, {8}, {8}, {7}, {7}, {6}, {6}, {6}, {5}, {5}, {5}, {4}, {4},   |
|     ------------------------------------------------------------------------|
|     {4}, {3}, {3}, {3}, {2}, {2}, {2}, {1}, {1}, {1}}                       |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+
|i5 : numgens A                                                               |
|                                                                             |
|o5 = 36                                                                      |
+-----------------------------------------------------------------------------+
|i6 : positionList=toList(0..30)                                              |
|                                                                             |
|o6 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,  |
|     ------------------------------------------------------------------------|
|     20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30}                             |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : (A,runfolding)=restrictedUnfolding(I,positionList)                      |
|                                                                             |
|o7 = (A, | x_0^2x_1-x_3^2+a_{0, 0}+x_0a_{0, 1}+x_1a_{0, 2}+x_3a_{0,          |
|     ------------------------------------------------------------------------|
|     3}+x_0^2a_{0, 4}+x_0x_1a_{0, 5}+x_1^2a_{0, 6}+x_0x_3a_{0, 7}            |
|     ------------------------------------------------------------------------|
|     x_1^3-x_0^2x_3+a_{1, 0}+x_0a_{1, 1}+x_1a_{1, 2}+x_3a_{1, 3}+x_0^2a_{1,  |
|     ------------------------------------------------------------------------|
|     4}+x_0x_1a_{1, 5}+x_1^2a_{1, 6}+x_0x_3a_{1, 7}+x_1x_3a_{1, 8}+x_0^3a_{1,|
|     ------------------------------------------------------------------------|
|     9} x_0^4-x_1^2x_3+a_{2, 0}+x_0a_{2, 1}+x_1a_{2, 2}+x_3a_{2,             |
|     ------------------------------------------------------------------------|
|     3}+x_0^2a_{2, 4}+x_0x_1a_{2, 5}+x_1^2a_{2, 6}+x_0x_3a_{2, 7}+x_1x_3a_{2,|
|     ------------------------------------------------------------------------|
|     8}+x_0^3a_{2, 9}+x_3^2a_{2, 10}+x_0x_1^2a_{2, 11}+x_0^2x_3a_{2, 12} |)  |
|                                                                             |
|o7 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i8 : (J,family)=getFlatFamily(I,A,runfolding)                                |
|                                                                             |
|o8 = (ideal (), | x_0^2x_1-x_3^2+x_1a_{0, 2}+a_{1, 4}^2+x_3a_{0, 3}-a_{1,    |
|     ------------------------------------------------------------------------|
|     4}a_{0, 3}+x_0^2a_{0, 4}+a_{0, 2}a_{0, 4}+x_0x_1a_{0, 5}+x_0a_{0,       |
|     ------------------------------------------------------------------------|
|     4}a_{0, 5}+x_1^2a_{0, 6}-a_{0, 4}^2a_{0, 6}+2x_0a_{1, 4}a_{1,           |
|     ------------------------------------------------------------------------|
|     9}-x_0a_{0, 3}a_{1, 9}+2a_{1, 4}a_{1, 7}a_{1, 9}-a_{0, 3}a_{1, 7}a_{1,  |
|     ------------------------------------------------------------------------|
|     9}-a_{0, 2}a_{1, 9}^2+2x_0a_{1, 7}a_{1, 9}^2+a_{1, 7}^2a_{1,            |
|     ------------------------------------------------------------------------|
|     9}^2-x_0a_{0, 5}a_{1, 9}^2+2a_{0, 4}a_{0, 6}a_{1, 9}^2-a_{0, 6}a_{1,    |
|     ------------------------------------------------------------------------|
|     9}^4+x_0x_3a_{0, 7}-x_0a_{1, 4}a_{0, 7}+a_{0, 2}a_{1, 9}a_{0,           |
|     ------------------------------------------------------------------------|
|     7}-x_0a_{1, 7}a_{1, 9}a_{0, 7}+x_0a_{0, 5}a_{1, 9}a_{0, 7}-2a_{0,       |
|     ------------------------------------------------------------------------|
|     4}a_{0, 6}a_{1, 9}a_{0, 7}+2a_{0, 6}a_{1, 9}^3a_{0, 7}-a_{0, 6}a_{1,    |
|     ------------------------------------------------------------------------|
|     9}^2a_{0, 7}^2 x_1^3-x_0^2x_3+x_1a_{1, 2}+x_3a_{1, 3}+x_0^2a_{1,        |
|     ------------------------------------------------------------------------|
|     4}-a_{1, 3}a_{1, 4}+x_0x_1a_{1, 5}+x_1^2a_{1, 6}+a_{1, 2}a_{0,          |
|     ------------------------------------------------------------------------|
|     4}+x_0a_{1, 5}a_{0, 4}-a_{1, 6}a_{0, 4}^2+a_{0, 4}^3+x_0x_3a_{1,        |
|     ------------------------------------------------------------------------|
|     7}-x_0a_{1, 4}a_{1, 7}+x_1x_3a_{1, 8}+a_{1, 4}a_{0, 4}a_{1,             |
|     ------------------------------------------------------------------------|
|     8}+x_0^3a_{1, 9}-x_0a_{1, 3}a_{1, 9}-a_{1, 3}a_{1, 7}a_{1, 9}-x_0a_{1,  |
|     ------------------------------------------------------------------------|
|     7}^2a_{1, 9}+x_0a_{0, 4}a_{1, 8}a_{1, 9}+a_{0, 4}a_{1, 7}a_{1, 8}a_{1,  |
|     ------------------------------------------------------------------------|
|     9}-a_{1, 2}a_{1, 9}^2-x_0a_{1, 5}a_{1, 9}^2+2a_{1, 6}a_{0, 4}a_{1,      |
|     ------------------------------------------------------------------------|
|     9}^2-3a_{0, 4}^2a_{1, 9}^2-a_{1, 4}a_{1, 8}a_{1, 9}^2-x_0a_{1, 8}a_{1,  |
|     ------------------------------------------------------------------------|
|     9}^3-a_{1, 7}a_{1, 8}a_{1, 9}^3-a_{1, 6}a_{1, 9}^4+3a_{0, 4}a_{1,       |
|     ------------------------------------------------------------------------|
|     9}^4-a_{1, 9}^6+a_{1, 2}a_{1, 9}a_{0, 7}+x_0a_{1, 5}a_{1, 9}a_{0,       |
|     ------------------------------------------------------------------------|
|     7}-2a_{1, 6}a_{0, 4}a_{1, 9}a_{0, 7}+3a_{0, 4}^2a_{1, 9}a_{0, 7}+a_{1,  |
|     ------------------------------------------------------------------------|
|     4}a_{1, 8}a_{1, 9}a_{0, 7}+x_0a_{1, 8}a_{1, 9}^2a_{0, 7}+a_{1, 7}a_{1,  |
|     ------------------------------------------------------------------------|
|     8}a_{1, 9}^2a_{0, 7}+2a_{1, 6}a_{1, 9}^3a_{0, 7}-6a_{0, 4}a_{1,         |
|     ------------------------------------------------------------------------|
|     9}^3a_{0, 7}+3a_{1, 9}^5a_{0, 7}-a_{1, 6}a_{1, 9}^2a_{0, 7}^2+3a_{0,    |
|     ------------------------------------------------------------------------|
|     4}a_{1, 9}^2a_{0, 7}^2-3a_{1, 9}^4a_{0, 7}^2+a_{1, 9}^3a_{0, 7}^3       |
|     ------------------------------------------------------------------------|
|     x_0^4-x_1^2x_3-x_3a_{1, 2}-x_0^2a_{1, 3}+x_0^2a_{0, 2}-a_{1, 3}a_{0,    |
|     ------------------------------------------------------------------------|
|     2}-x_1^2a_{1, 4}-a_{1, 2}a_{1, 4}+x_1^2a_{0, 3}+a_{1, 2}a_{0,           |
|     ------------------------------------------------------------------------|
|     3}-x_0x_3a_{1, 5}-x_0a_{1, 4}a_{1, 5}+x_0a_{0, 3}a_{1, 5}-x_1x_3a_{1,   |
|     ------------------------------------------------------------------------|
|     6}-x_1a_{1, 4}a_{1, 6}+x_1a_{0, 3}a_{1, 6}+x_1x_3a_{0, 4}+x_1a_{1,      |
|     ------------------------------------------------------------------------|
|     4}a_{0, 4}-x_1a_{0, 3}a_{0, 4}+x_3a_{1, 6}a_{0, 4}+a_{1, 4}a_{1, 6}a_{0,|
|     ------------------------------------------------------------------------|
|     4}-a_{0, 3}a_{1, 6}a_{0, 4}-x_3a_{0, 4}^2-a_{1, 4}a_{0, 4}^2+a_{0,      |
|     ------------------------------------------------------------------------|
|     3}a_{0, 4}^2-x_0^3a_{1, 7}-x_0a_{0, 2}a_{1, 7}+x_0^3a_{0, 5}-x_0a_{1,   |
|     ------------------------------------------------------------------------|
|     3}a_{0, 5}-x_0^2a_{1, 7}a_{0, 5}-x_3^2a_{1, 8}-x_3a_{1, 4}a_{1,         |
|     ------------------------------------------------------------------------|
|     8}+x_3a_{0, 3}a_{1, 8}+x_0^2a_{0, 4}a_{1, 8}+a_{0, 2}a_{0, 4}a_{1,      |
|     ------------------------------------------------------------------------|
|     8}+x_0a_{0, 4}a_{0, 5}a_{1, 8}+x_3^2a_{0, 6}-x_1a_{1, 3}a_{0,           |
|     ------------------------------------------------------------------------|
|     6}-x_1a_{0, 2}a_{0, 6}-a_{1, 4}^2a_{0, 6}-x_3a_{0, 3}a_{0, 6}+a_{1,     |
|     ------------------------------------------------------------------------|
|     4}a_{0, 3}a_{0, 6}-2x_0^2a_{0, 4}a_{0, 6}+a_{1, 3}a_{0, 4}a_{0, 6}-a_{0,|
|     ------------------------------------------------------------------------|
|     2}a_{0, 4}a_{0, 6}-x_0x_1a_{1, 7}a_{0, 6}+x_0a_{0, 4}a_{1, 7}a_{0,      |
|     ------------------------------------------------------------------------|
|     6}-x_0x_1a_{0, 5}a_{0, 6}-x_0a_{0, 4}a_{0, 5}a_{0, 6}+x_1a_{0, 4}a_{1,  |
|     ------------------------------------------------------------------------|
|     8}a_{0, 6}-a_{0, 4}^2a_{1, 8}a_{0, 6}-x_1^2a_{0, 6}^2+a_{0, 4}^2a_{0,   |
|     ------------------------------------------------------------------------|
|     6}^2-x_0x_1^2a_{1, 9}-x_0a_{1, 2}a_{1, 9}-x_0^2a_{1, 5}a_{1,            |
|     ------------------------------------------------------------------------|
|     9}-x_0x_1a_{1, 6}a_{1, 9}+x_0x_1a_{0, 4}a_{1, 9}+x_0a_{1, 6}a_{0,       |
|     ------------------------------------------------------------------------|
|     4}a_{1, 9}-x_0a_{0, 4}^2a_{1, 9}-x_1^2a_{1, 7}a_{1, 9}-a_{1, 2}a_{1,    |
|     ------------------------------------------------------------------------|
|     7}a_{1, 9}-x_0a_{1, 5}a_{1, 7}a_{1, 9}-x_1a_{1, 6}a_{1, 7}a_{1,         |
|     ------------------------------------------------------------------------|
|     9}+x_1a_{0, 4}a_{1, 7}a_{1, 9}+a_{1, 6}a_{0, 4}a_{1, 7}a_{1, 9}-a_{0,   |
|     ------------------------------------------------------------------------|
|     4}^2a_{1, 7}a_{1, 9}-x_0x_3a_{1, 8}a_{1, 9}-x_3a_{1, 7}a_{1, 8}a_{1,    |
|     ------------------------------------------------------------------------|
|     9}-2x_0a_{1, 4}a_{0, 6}a_{1, 9}+x_0a_{0, 3}a_{0, 6}a_{1, 9}-2a_{1,      |
|     ------------------------------------------------------------------------|
|     4}a_{1, 7}a_{0, 6}a_{1, 9}+a_{0, 3}a_{1, 7}a_{0, 6}a_{1, 9}-x_1x_3a_{1, |
|     ------------------------------------------------------------------------|
|     9}^2-x_1a_{1, 4}a_{1, 9}^2+x_1a_{0, 3}a_{1, 9}^2-x_3a_{1, 6}a_{1,       |
|     ------------------------------------------------------------------------|
|     9}^2-a_{1, 4}a_{1, 6}a_{1, 9}^2+a_{0, 3}a_{1, 6}a_{1, 9}^2+2x_3a_{0,    |
|     ------------------------------------------------------------------------|
|     4}a_{1, 9}^2+2a_{1, 4}a_{0, 4}a_{1, 9}^2-2a_{0, 3}a_{0, 4}a_{1,         |
|     ------------------------------------------------------------------------|
|     9}^2-x_0^2a_{1, 8}a_{1, 9}^2-a_{0, 2}a_{1, 8}a_{1, 9}^2-x_0a_{0, 5}a_{1,|
|     ------------------------------------------------------------------------|
|     8}a_{1, 9}^2+x_0^2a_{0, 6}a_{1, 9}^2-a_{1, 3}a_{0, 6}a_{1, 9}^2+a_{0,   |
|     ------------------------------------------------------------------------|
|     2}a_{0, 6}a_{1, 9}^2-3x_0a_{1, 7}a_{0, 6}a_{1, 9}^2-a_{1, 7}^2a_{0,     |
|     ------------------------------------------------------------------------|
|     6}a_{1, 9}^2+x_0a_{0, 5}a_{0, 6}a_{1, 9}^2-x_1a_{1, 8}a_{0, 6}a_{1,     |
|     ------------------------------------------------------------------------|
|     9}^2+2a_{0, 4}a_{1, 8}a_{0, 6}a_{1, 9}^2-2a_{0, 4}a_{0, 6}^2a_{1,       |
|     ------------------------------------------------------------------------|
|     9}^2-x_0x_1a_{1, 9}^3-x_0a_{1, 6}a_{1, 9}^3+2x_0a_{0, 4}a_{1,           |
|     ------------------------------------------------------------------------|
|     9}^3-x_1a_{1, 7}a_{1, 9}^3-a_{1, 6}a_{1, 7}a_{1, 9}^3+2a_{0, 4}a_{1,    |
|     ------------------------------------------------------------------------|
|     7}a_{1, 9}^3-x_3a_{1, 9}^4-a_{1, 4}a_{1, 9}^4+a_{0, 3}a_{1, 9}^4-a_{1,  |
|     ------------------------------------------------------------------------|
|     8}a_{0, 6}a_{1, 9}^4+a_{0, 6}^2a_{1, 9}^4-x_0a_{1, 9}^5-a_{1, 7}a_{1,   |
|     ------------------------------------------------------------------------|
|     9}^5+x_0x_1^2a_{0, 7}+x_0a_{1, 2}a_{0, 7}+x_0^2a_{1, 5}a_{0,            |
|     ------------------------------------------------------------------------|
|     7}+x_0x_1a_{1, 6}a_{0, 7}-x_0x_1a_{0, 4}a_{0, 7}-x_0a_{1, 6}a_{0,       |
|     ------------------------------------------------------------------------|
|     4}a_{0, 7}+x_0a_{0, 4}^2a_{0, 7}+x_0x_3a_{1, 8}a_{0, 7}-x_0x_3a_{0,     |
|     ------------------------------------------------------------------------|
|     6}a_{0, 7}+x_0a_{1, 4}a_{0, 6}a_{0, 7}+x_1x_3a_{1, 9}a_{0, 7}+x_1a_{1,  |
|     ------------------------------------------------------------------------|
|     4}a_{1, 9}a_{0, 7}-x_1a_{0, 3}a_{1, 9}a_{0, 7}+x_3a_{1, 6}a_{1, 9}a_{0, |
|     ------------------------------------------------------------------------|
|     7}+a_{1, 4}a_{1, 6}a_{1, 9}a_{0, 7}-a_{0, 3}a_{1, 6}a_{1, 9}a_{0,       |
|     ------------------------------------------------------------------------|
|     7}-2x_3a_{0, 4}a_{1, 9}a_{0, 7}-2a_{1, 4}a_{0, 4}a_{1, 9}a_{0, 7}+2a_{0,|
|     ------------------------------------------------------------------------|
|     3}a_{0, 4}a_{1, 9}a_{0, 7}+x_0^2a_{1, 8}a_{1, 9}a_{0, 7}+a_{0, 2}a_{1,  |
|     ------------------------------------------------------------------------|
|     8}a_{1, 9}a_{0, 7}+x_0a_{0, 5}a_{1, 8}a_{1, 9}a_{0, 7}-x_0^2a_{0,       |
|     ------------------------------------------------------------------------|
|     6}a_{1, 9}a_{0, 7}+a_{1, 3}a_{0, 6}a_{1, 9}a_{0, 7}-a_{0, 2}a_{0,       |
|     ------------------------------------------------------------------------|
|     6}a_{1, 9}a_{0, 7}+2x_0a_{1, 7}a_{0, 6}a_{1, 9}a_{0, 7}-x_0a_{0, 5}a_{0,|
|     ------------------------------------------------------------------------|
|     6}a_{1, 9}a_{0, 7}+x_1a_{1, 8}a_{0, 6}a_{1, 9}a_{0, 7}-2a_{0, 4}a_{1,   |
|     ------------------------------------------------------------------------|
|     8}a_{0, 6}a_{1, 9}a_{0, 7}+2a_{0, 4}a_{0, 6}^2a_{1, 9}a_{0,             |
|     ------------------------------------------------------------------------|
|     7}+2x_0x_1a_{1, 9}^2a_{0, 7}+2x_0a_{1, 6}a_{1, 9}^2a_{0, 7}-4x_0a_{0,   |
|     ------------------------------------------------------------------------|
|     4}a_{1, 9}^2a_{0, 7}+x_1a_{1, 7}a_{1, 9}^2a_{0, 7}+a_{1, 6}a_{1, 7}a_{1,|
|     ------------------------------------------------------------------------|
|     9}^2a_{0, 7}-2a_{0, 4}a_{1, 7}a_{1, 9}^2a_{0, 7}+2x_3a_{1, 9}^3a_{0,    |
|     ------------------------------------------------------------------------|
|     7}+2a_{1, 4}a_{1, 9}^3a_{0, 7}-2a_{0, 3}a_{1, 9}^3a_{0, 7}+2a_{1,       |
|     ------------------------------------------------------------------------|
|     8}a_{0, 6}a_{1, 9}^3a_{0, 7}-2a_{0, 6}^2a_{1, 9}^3a_{0, 7}+3x_0a_{1,    |
|     ------------------------------------------------------------------------|
|     9}^4a_{0, 7}+2a_{1, 7}a_{1, 9}^4a_{0, 7}-x_0x_1a_{1, 9}a_{0,            |
|     ------------------------------------------------------------------------|
|     7}^2-x_0a_{1, 6}a_{1, 9}a_{0, 7}^2+2x_0a_{0, 4}a_{1, 9}a_{0,            |
|     ------------------------------------------------------------------------|
|     7}^2-x_3a_{1, 9}^2a_{0, 7}^2-a_{1, 4}a_{1, 9}^2a_{0, 7}^2+a_{0, 3}a_{1, |
|     ------------------------------------------------------------------------|
|     9}^2a_{0, 7}^2-a_{1, 8}a_{0, 6}a_{1, 9}^2a_{0, 7}^2+a_{0, 6}^2a_{1,     |
|     ------------------------------------------------------------------------|
|     9}^2a_{0, 7}^2-3x_0a_{1, 9}^3a_{0, 7}^2-a_{1, 7}a_{1, 9}^3a_{0,         |
|     ------------------------------------------------------------------------|
|     7}^2+x_0a_{1, 9}^2a_{0, 7}^3 |)                                         |
|                                                                             |
|o8 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i9 : support runfolding                                                      |
|                                                                             |
|o9 = {x , x , x , a      , a      , a      , a      , a      , a      , a    |
|       0   1   3   {2, 0}   {1, 0}   {0, 0}   {2, 1}   {2, 2}   {1, 1}   {2, |
|     ------------------------------------------------------------------------|
|       , a      , a      , a      , a      , a      , a      , a      , a    |
|     3}   {1, 2}   {0, 1}   {2, 4}   {1, 3}   {0, 2}   {2, 5}   {2, 6}   {1, |
|     ------------------------------------------------------------------------|
|       , a      , a      , a      , a      , a      , a      , a      , a    |
|     4}   {0, 3}   {2, 7}   {1, 5}   {2, 8}   {1, 6}   {0, 4}   {2, 9}   {1, |
|     ------------------------------------------------------------------------|
|       , a      , a       , a      , a      , a       , a      , a      ,    |
|     7}   {0, 5}   {2, 10}   {1, 8}   {0, 6}   {2, 11}   {1, 9}   {0, 7}     |
|     ------------------------------------------------------------------------|
|     a       }                                                               |
|      {2, 12}                                                                |
|                                                                             |
|o9 : List                                                                    |
+-----------------------------------------------------------------------------+
|i10 : support family                                                         |
|                                                                             |
|o10 = {x , x , x , a      , a      , a      , a      , a      , a      , a   |
|        0   1   3   {1, 2}   {1, 3}   {0, 2}   {1, 4}   {0, 3}   {1, 5}   {1,|
|      -----------------------------------------------------------------------|
|        , a      , a      , a      , a      , a      , a      , a      }     |
|      6}   {0, 4}   {1, 7}   {0, 5}   {1, 8}   {0, 6}   {1, 9}   {0, 7}      |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+

Ways to use restrictedUnfolding:
================================

  * "restrictedUnfolding(Ideal,List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1467:0.

satisfiesDegreeCondition1 -- Does the semigroup ideal of L satisfies the degree condition for the 3rd respectively 2nd syzgy matrix?
************************************************************************************************************************************

  * Usage:
        answer = satisfiesDegreeCondition1 L
        answer = satisfiesDegreeCondition2 L
  * Inputs:
      * L, a list (Macaulay2Doc), generators of a semigroup with 4
        generators
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), the answer

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

Does the resolution of the semigroup ideal of L satisfies the degree condition
1 respectively 2 for the 2nd or 3rd syzygy matrix?

+----------------------------------------------------------------------------+
|i1 : L = {6,9,13,16}                                                        |
|                                                                            |
|o1 = {6, 9, 13, 16}                                                         |
|                                                                            |
|o1 : List                                                                   |
+----------------------------------------------------------------------------+
|i2 : satisfiesDegreeCondition1 L                                            |
|                                                                            |
|o2 = true                                                                   |
+----------------------------------------------------------------------------+
|i3 : satisfiesDegreeCondition2 L                                            |
|                                                                            |
|o3 = true                                                                   |
+----------------------------------------------------------------------------+
|i4 : displaySyzygyMatrices L;                                               |
|+----------------------------------------------------------------------+    |
||{-18} | x_3^2-x_0^3 -y    -w    0    0    x_0^5 0      0      0      ||    |
||{-22} | x_3y-wx_0   x_3   x_0^2 -w   yx_0 -y2   0      0      -x_0^6 ||    |
||{-25} | x_3w-yx_0^2 x_0   x_3   y    -w   0     -y2    -x_0^5 0      ||    |
||{-32} | w2-y2x_0    0     0     -x_0 x_3  0     0      0      -y2    ||    |
||{-39} | y3-x_3x_0^5 0     0     0    0    x_3   -x_0^2 -w     -yx_0  ||    |
||{-42} | y2w-x_0^7   0     0     0    0    -x_0  x_3    y      w      ||    |
||{0}   | 0           w     -y    x_3  x_0  0     0      0      0      ||    |
||{0}   | 0           0     x_0^5 -y2  0    w     -y     x_3    x_0    ||    |
||{0}   | 0           x_0^6 0     0    y2   yx_0  -w     x_0^2  x_3    ||    |
|+----------------------------------------------------------------------+    |
||(13, | 13  16 20 23 30 33 37 40 |, | 16  33 36 |)                     |    |
||     | 9   12 16 19 26 29 33 36 |  | 13  30 33 |                      |    |
||     | 6   9  13 16 23 26 30 33 |  | 9   26 29 |                      |    |
||     | -1  2  6  9  16 19 23 26 |  | 6   23 26 |                      |    |
||     | -8  -5 -1 2  9  12 16 19 |  | -1  16 19 |                      |    |
||     | -11 -8 -4 -1 6  9  13 16 |  | -4  13 16 |                      |    |
||                                   | -8  9  12 |                      |    |
||                                   | -11 6  9  |                      |    |
|+----------------------------------------------------------------------+    |
+----------------------------------------------------------------------------+
|i5 : L = {6,15,17,20}                                                       |
|                                                                            |
|o5 = {6, 15, 17, 20}                                                        |
|                                                                            |
|o5 : List                                                                   |
+----------------------------------------------------------------------------+
|i6 : displaySyzygyMatrices L;                                               |
|+--------------------------------------------------------------------------+|
||{-30} | x_3^2-x_0^5 -y    -w    0      0     x_0^6  0      0      0      |||
||{-32} | x_3y-wx_0^2 x_3   x_0^3 -w     yx_0  -y2    0      0      -x_0^7 |||
||{-35} | x_3w-yx_0^3 x_0^2 x_3   y      -w    0      -y2    -x_0^6 0      |||
||{-40} | w2-y2x_0    0     0     -x_0^2 x_3   0      0      0      -y2    |||
||{-51} | y3-x_3x_0^6 0     0     0      0     x_3    -x_0^3 -w     -yx_0  |||
||{-54} | y2w-x_0^9   0     0     0      0     -x_0^2 x_3    y      w      |||
||{0}   | 0           w     -y    x_3    x_0^2 0      0      0      0      |||
||{0}   | 0           0     x_0^6 -y2    0     w      -y     x_3    x_0^2  |||
||{0}   | 0           x_0^7 0     0      y2    yx_0   -w     x_0^3  x_3    |||
|+--------------------------------------------------------------------------+|
||(18, | 17 20 22 25 36 39 41 44 |, | 20 39 42 |)                           ||
||     | 15 18 20 23 34 37 39 42 |  | 17 36 39 |                            ||
||     | 12 15 17 20 31 34 36 39 |  | 15 34 37 |                            ||
||     | 7  10 12 15 26 29 31 34 |  | 12 31 34 |                            ||
||     | -4 -1 1  4  15 18 20 23 |  | 1  20 23 |                            ||
||     | -7 -4 -2 1  12 15 17 20 |  | -2 17 20 |                            ||
||                                  | -4 15 18 |                            ||
||                                  | -7 12 15 |                            ||
|+--------------------------------------------------------------------------+|
+----------------------------------------------------------------------------+
|i7 : satisfiesDegreeCondition1 L                                            |
|                                                                            |
|o7 = false                                                                  |
+----------------------------------------------------------------------------+

Ways to use satisfiesDegreeCondition1:
======================================

  * "satisfiesDegreeCondition1(List)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3367:0.

smoothnessWithReductions -- Check smoothness by using reductions to points
**************************************************************************

  * Usage:
        answer = smoothnessWithReductions J
  * Inputs:
      * J, an ideal (Macaulay2Doc), of a one parameter family
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10007
      * Verbose => ..., default value 0
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), true if the
        fiber is smooth

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

Given a homogeneous ideal J in S[z]=kk[x,z] which defines a flat family of
affine curves we check smoothness of the general fiber at z=1. The basic idea
is to compute some minors of the jacobian matrix which intersect the curve in a
zero-dimensional scheme singF. Then using decompose singF to reduce the check
at points of the finitely many maximal ideals p. Since Sp=S/p is a field the
rank of the jacobian matrix restricted to Sp can be computed by checking the
number of generators of the cokernel, since cokernel represents the Zariski
tangent space at p of the original curve. This is much cheaper then computing
all or enough minors of the jacobian matrix.

+-----------------------------------------------------------------------------+
|i1 : L={5,6,8}                                                               |
|                                                                             |
|o1 = {5, 6, 8}                                                               |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : genus L                                                                 |
|                                                                             |
|o2 = 6                                                                       |
+-----------------------------------------------------------------------------+
|i3 : R=QQ[x_0, x_1, x_3, z,Degrees=>{5, 6, 8, 1}]                            |
|                                                                             |
|o3 = R                                                                       |
|                                                                             |
|o3 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i4 : J=ideal(x_0^2*x_1-x_3^2-x_0^2*z^6-x_3*z^8-x_1*z^10+z^16,x_1^3-x_0^2*x_3-|
|                                                                             |
|             2      2    2 6      8      10    16   3    2      2 6        7 |
|o4 = ideal (x x  - x  - x z  - x z  - x z   + z  , x  - x x  - x z  - x x z  |
|             0 1    3    0      3      1            1    0 3    1      0 1   |
|     ------------------------------------------------------------------------|
|        2 8      10      12      13   4    2          7      12    20        |
|     - x z  - x z   - x z   + x z  , x  - x x  + x x z  + x z   - z  )       |
|        0      3       1       0      0    1 3    0 3      3                 |
|                                                                             |
|o4 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|x_1^2*z^6-x_0*x_1*z^7-x_0^2*z^8-x_3*z^10-x_1*z^12+x_0*z^13,x_0^4-x_1^2*x_3+x_|
|-----------------------------------------------------------------------------|
|0*x_3*z^7+x_3*z^12-z^20)                                                     |
+-----------------------------------------------------------------------------+
|i5 : elapsedTime smoothnessWithReductions(J,Verbose=>2)                      |
|semigroup = {5, 6, 8}                                                        |
|dim and degree singF = (0, 4)                                                |
| -- .0208886s elapsed                                                        |
|                                                                             |
|o5 = true                                                                    |
+-----------------------------------------------------------------------------+

The intermediate output dim and degree singF = (0, 4) says that after computing
some minors of the jacobian matrix, we detect that the curve is smooth away
from the zero dimensional scheme defined by singF of degree 4.

The function checkSmoothness takes longer, some times much longer.

Ways to use smoothnessWithReductions:
=====================================

  * "smoothnessWithReductions(Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:1780:0.

solvingFlatteningRelations -- Solving the flatttening relations over QQ
***********************************************************************

  * Usage:
        (worked,fiber)=solvingFlatteningRelations(base,family,I)
  * Inputs:
      * base, an ideal (Macaulay2Doc), irreducible ideal of
        flattening relations
      * family, a matrix (Macaulay2Doc), matrix of generators of
        the family
      * I, an ideal (Macaulay2Doc), semigroup ideal
  * Optional inputs (Macaulay2Doc),:
      * BaseField => ..., default value ZZ/10000019
      * CoeffBound => ..., default value 10000
      * CoeffSize => ..., default value 1
      * Verbose => ..., default value 0
  * Outputs:
      * worked, a Boolean value (Macaulay2Doc), true if a
        smoothing family was found
      * fiber, an ideal (Macaulay2Doc), ideal of a 1-parameter
        smoothing family

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

We look for subsets of the source consisting of all but codim base many
elements which define a linear subspace of the base. Substituting random small
values for these variables, might lead to an ideal which defines a point in the
base. There is some intermediate output.

+-----------------------------------------------------------------------------+
|i1 : L={7,8,17,19,20}                                                        |
|                                                                             |
|o1 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : I=semigroupIdeal L;                                                     |
|                                                                             |
|               ZZ                                                            |
|o2 : Ideal of -----[x ..x , x , x ..x ]                                      |
|              10007  0   1   3   5   6                                       |
+-----------------------------------------------------------------------------+
|i3 : (answer,J,comp)=testBound(L,12);                                        |
|  # of coordinate linear subspace of the base = 21                           |
|  # of linear subsets which leading to a point =21                           |
+-----------------------------------------------------------------------------+
|i4 : (base1,family1)=getParameterFamily J;                                   |
+-----------------------------------------------------------------------------+
|i5 : base=last decompose base1;                                              |
|                                                                             |
|o5 : Ideal of QQ[a      , a      , a      , a      , a      , a      , a     |
|                  {1, 1}   {1, 2}   {3, 4}   {0, 1}   {0, 2}   {2, 3}   {1,  |
|-----------------------------------------------------------------------------|
|  ]                                                                          |
|3}                                                                           |
+-----------------------------------------------------------------------------+
|i6 : family=family1%sub(base,ring family1);                                  |
|                                                                             |
|                                                                             |
|o6 : Matrix (QQ[x ..x , x , x ..x , a      , a      , a      , a      , a    |
|                 0   1   3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|0}   {4, 0}   {9, 1}   {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}   |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {6, 6}   {5, 5}   {4, 3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a       , a      , |
|4}   {3, 3}   {1, 2}   {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}  |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a       , a       , a      , a      ,    |
| {6, 8}   {5, 7}   {3, 5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}     |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a       , a       , a      , a      , a      , a       ,   |
| {3, 6}   {0, 2}   {9, 14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}    |
|-----------------------------------------------------------------------------|
|                                                     1                       |
|a       , a       , a       , a      , a      , a      ])  <-- (QQ[x ..x ,   |
| {8, 14}   {6, 12}   {5, 11}   {4, 9}   {2, 4}   {1, 3}             0   1    |
|-----------------------------------------------------------------------------|
|                                                                             |
|x , x ..x , a      , a      , a      , a      , a      , a      , a      ,   |
| 3   5   6   {9, 0}   {8, 0}   {7, 0}   {6, 0}   {5, 0}   {4, 0}   {9, 1}    |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a      , a      , a      , a      , a    |
| {7, 1}   {5, 1}   {4, 1}   {9, 3}   {9, 8}   {8, 7}   {6, 6}   {5, 5}   {4, |
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a      , a      , a      , a      , a      , a      , a      ,  |
|3}   {2, 2}   {1, 1}   {9, 9}   {8, 8}   {5, 6}   {4, 4}   {3, 3}   {1, 2}   |
|-----------------------------------------------------------------------------|
|                                                                             |
|a      , a      , a      , a      , a       , a      , a      , a      , a   |
| {8, 9}   {7, 8}   {4, 5}   {3, 4}   {8, 10}   {7, 9}   {6, 8}   {5, 7}   {3,|
|-----------------------------------------------------------------------------|
|                                                                             |
|  , a      , a       , a       , a      , a      , a      , a      , a       |
|5}   {0, 1}   {8, 11}   {7, 10}   {6, 9}   {5, 8}   {3, 6}   {0, 2}   {9,    |
|-----------------------------------------------------------------------------|
|                                                                             |
|   , a       , a      , a      , a      , a       , a       , a       , a    |
|14}   {6, 11}   {4, 8}   {3, 7}   {2, 3}   {9, 15}   {8, 14}   {6, 12}   {5, |
|-----------------------------------------------------------------------------|
|                            10                                               |
|   , a      , a      , a      ])                                             |
|11}   {4, 9}   {2, 4}   {1, 3}                                               |
+-----------------------------------------------------------------------------+
|i7 : (worked,fiber)=solvingFlatteningRelations(base,family,I)                |
|  # of coordinate linear subspace of the base = 2                            |
|  # of linear subsets which leading to a point =2                            |
|                                                                             |
|o7 = (true, | x_1^3-x_0x_3+x_1+x_0 x_1x_5-x_0x_6+x_0^2+x_1-x_0               |
| x_0^4-x_1x_6+x_0x_1+x_0^2-x_1                                               |
| x_1^2x_3-x_0^2x_5-x_5+x_3+x_1^2+x_0x_1+x_0^2                                |
| x_3^2-x_0^2x_6+x_0^3-x_6+x_1^2+2x_0x_1-x_0^2+x_0-2                          |
| x_3x_5-x_1^2x_6+x_0x_1^2-x_6-x_5+x_3-x_1^2+x_0-2                            |
| x_0^3x_1^2-x_3x_6+x_0x_3+x_0x_1^2+x_0^3+x_6-x_3+1                           |
| x_0^3x_3-x_5^2+x_0^2x_1+x_0^3+x_6-x_0+2                                     |
| x_0^2x_1x_3-x_5x_6+x_0x_5+x_0x_1^2+x_0^2x_1+x_0^3+x_6-x_5+1                 |
| x_0^3x_5-x_6^2+2x_0x_6+x_0x_5+x_0^3-2x_6-x_0^2+3x_0-1 |)                    |
|                                                                             |
|o7 : Sequence                                                                |
+-----------------------------------------------------------------------------+

See also
========

  * clearDenominators -- Clear denominators

Ways to use solvingFlatteningRelations:
=======================================

  * "solvingFlatteningRelations(Ideal,Matrix,Ideal)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2557:0.

testBound -- Test whether b is bound for the semigroup L and compute a 1-parameter smoothing family if yes
**********************************************************************************************************

  * Usage:
        (answer,J,comp) = testBound(L,b)
  * Inputs:
      * L, a list (Macaulay2Doc), a of generators of a semigroup
      * b, an integer (Macaulay2Doc), bound for the degrees of the
        parameters
  * Optional inputs (Macaulay2Doc),:
      * CoeffSize => ..., default value 1
      * Verbose => ..., default value 0
  * Outputs:
      * answer, a Boolean value (Macaulay2Doc), true if a
        smoothing family was found
      * J, an ideal (Macaulay2Doc), ideal of a 1-parameter
        smoothing family of the semigroup ring of L
      * comp, a list (Macaulay2Doc), of component numbers which are
        smoothing families

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

We check whether there exists a smoothing component for the restricted
unfolding with variables of degree >b (or degree congruent 0 mod d for some d
in congruences or variable with degree in the range). If the answer is yes,
then we compute such smoothing family over QQ. This however might fail if the
coefficient size is too small or the random choices in
solvingFlatteningRelations are bad. In that case J will be null.

+-----------------------------------------------------------------------------+
|i1 : L={7,8,17,19,20}                                                        |
|                                                                             |
|o1 = {7, 8, 17, 19, 20}                                                      |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : (answer,J,comp)=testBound(L,12)                                         |
|# of coordinate linear subspace of the base = 21                             |
|# of linear subsets which leading to a point =21                             |
|                                                                             |
|                    3             16      17                 2 13      19    |
|o2 = (true, ideal (x  - x x  + x z   + x z  , x x  - x x  + x z   + x z   -  |
|                1    0 3    1       0      1 5    0 6    0       1           |
|         20   4               13    2 14      20   2      2        14      16|
|      x z  , x  - x x  + x x z   + x z   - x z  , x x  - x x  - x z   + x z  |
|       0      0    1 6    0 1       0       1      1 3    0 5    5       3   |
|        2 17        18    2 19   2    2      3 13      14    2 18         19 |
|     + x z   + x x z   + x z  , x  - x x  + x z   - x z   + x z   + 2x x z   |
|        1       0 1       0      3    0 6    0       6       1        0 1    |
|        2 20      27     34          2        2 13      16      17      19   |
|     - x z   + x z   - 2z  , x x  - x x  + x x z   - x z   - x z   + x z   - |
|        0       0             3 5    1 6    0 1       6       5       3      |
|      2 20      29     36   3 2               13      2 14    3 16      17   |
|     x z   + x z   - 2z  , x x  - x x  + x x z   + x x z   + x z   + x z   - |
|      1       0             0 1    3 6    0 3       0 1       0       6      |
|        20    37   3      2    2   16    3 17      18      31     38   2     |
|     x z   + z  , x x  - x  + x x z   + x z   + x z   - x z   + 2z  , x x x  |
|      3            0 3    5    0 1       0       6       0             0 1 3 |
|                   13      2 16    2   17    3 18      19      20    39   3  |
|     - x x  + x x z   + x x z   + x x z   + x z   + x z   - x z   + z  , x x |
|       5 6    0 5       0 1       0 1       0       6       5            0 5 |
|        2         13        14    3 19       20    2 26       33    40       |
|     - x  + 2x x z   + x x z   + x z   - 2x z   - x z   + 3x z   - z  ), {0})|
|        6     0 6       0 5       0        6       0        0                |
|                                                                             |
|o2 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i3 : range=drop(flatten getRangeOfOneParameterFamily J,-5)                   |
|                                                                             |
|o3 = {13, 14, 16, 17, 18, 19, 20, 26, 27, 29, 31, 33, 34}                    |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : (answer1,J1,comp)=testRange(L,range,CoeffSize=>2)                       |
|# of coordinate linear subspace of the base = 6                              |
|# of linear subsets which leading to a point =4                              |
|                                                                             |
|                 3               16       17                  2 13   4       |
|o4 = (true, ideal (2x  - 2x x  + 6x z   + 3x z  , x x  - x x  + 3x z  , x  - |
|                 1     0 3     1        0      1 5    0 6     0      0       |
|              13     2 14    2       2         13        14        16        |
| x x  + 4x x z   + 2x z  , 8x x  - 8x x  - 8x z   - 16x z   + 24x z   +      |
|  1 6     0 1        0       1 3     0 5     6         5         3           |
|        18      2 19        26    2     2        3 13        14        17    |
| 27x x z   + 18x z   + 24x z  , 8x  - 8x x  + 16x z   - 16x z   - 12x z      |
|    0 1         0         0       3     0 6      0         6         3       |
|      2 18          19       26        27            2         2 13          |
| + 27x z   + 18x x z   - 8x z   + 32x z  , 2x x  - 2x x  + 6x x z   -        |
|      1         0 1        1         0       3 5     1 6     0 1             |
|     16       17        29    3 2                 13       2 14     3 16     |
| 6x z   - 3x z   + 18x z  , 2x x  - 2x x  + 8x x z   + 4x x z   + 6x z       |
|   6        5         0       0 1     3 6     0 3        0 1        0        |
|       17    3       2      2   16        18        19         31            |
| + 3x z  , 8x x  - 8x  + 24x x z   + 27x z   + 18x z   - 108x z  ,           |
|     6       0 3     5      0 1         6         5          0               |
|   2                      13        2 16      3 18        19   3      2      |
| 8x x x  - 8x x  + 24x x z   + 24x x z   + 27x z   + 18x z  , x x  - x  +    |
|   0 1 3     5 6      0 5         0 1         0         6      0 5    6      |
|       13         14      2 26                                               |
| 7x x z   + 2x x z   - 12x z  ), {0})                                        |
|   0 6        0 5         0                                                  |
|                                                                             |
|o4 : Sequence                                                                |
+-----------------------------------------------------------------------------+
|i5 : J_*/size                                                                |
|                                                                             |
|o5 = {4, 5, 5, 7, 9, 9, 8, 7, 9, 9}                                          |
|                                                                             |
|o5 : List                                                                    |
+-----------------------------------------------------------------------------+
|i6 : J1_*/size                                                               |
|                                                                             |
|o6 = {4, 3, 4, 8, 9, 6, 6, 6, 6, 5}                                          |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : congruences={6}                                                         |
|                                                                             |
|o7 = {6}                                                                     |
|                                                                             |
|o7 : List                                                                    |
+-----------------------------------------------------------------------------+
|i8 : (answer,J,comp)=testCongruences(L,congruences,Verbose=>2)               |
|                                                                             |
|o8 = (false, , {})                                                           |
|                                                                             |
|o8 : Sequence                                                                |
+-----------------------------------------------------------------------------+

See also
========

  * solvingFlatteningRelations -- Solving
    the flatttening relations over QQ

Ways to use testBound:
======================

  * "testBound(List,ZZ)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:2461:0.

toDoList -- Make a list of semigroups not previously known to be Weierstrass
****************************************************************************

  * Usage:
        LL=toDoList g
        LL=toDoList(m,g)
  * Inputs:
      * g, an integer (Macaulay2Doc), the desired genus
      * m, an integer (Macaulay2Doc), the multiplicity
  * Outputs:
      * LL, a list (Macaulay2Doc), of semigropus

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

+-----------------------------------------------------------------------------+
|i1 : LL8=toDoList 8                                                          |
|                                                                             |
|o1 = {{6, 7, 9, 17}, {6, 7, 8, 17}, {6, 8, 9, 11}, {6, 8, 9, 10}, {6, 8, 10, |
|     ------------------------------------------------------------------------|
|     11, 13}, {7, 8, 9, 10, 13}, {7, 8, 9, 11, 12}, {7, 8, 9, 10, 12}, {7, 8,|
|     ------------------------------------------------------------------------|
|     9, 10, 11}}                                                             |
|                                                                             |
|o1 : List                                                                    |
+-----------------------------------------------------------------------------+
|i2 : #LL8                                                                    |
|                                                                             |
|o2 = 9                                                                       |
+-----------------------------------------------------------------------------+
|i3 : LL610=toDoList(6,9)                                                     |
|                                                                             |
|o3 = {{6, 8, 10, 15, 17, 19}, {6, 8, 9, 19}, {6, 9, 10, 13, 17}, {6, 9, 10,  |
|     ------------------------------------------------------------------------|
|     11}, {6, 8, 11, 13}, {6, 7, 11, 16}, {6, 8, 10, 13, 17}, {6, 8, 10, 11},|
|     ------------------------------------------------------------------------|
|     {6, 9, 11, 13, 14}, {6, 7, 11, 15}, {6, 9, 10, 13, 14}, {6, 8, 10, 13,  |
|     ------------------------------------------------------------------------|
|     15}}                                                                    |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : #LL610                                                                  |
|                                                                             |
|o4 = 12                                                                      |
+-----------------------------------------------------------------------------+

Ways to use toDoList:
=====================

  * "toDoList(ZZ)"
  * "toDoList(ZZ,ZZ)"

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

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

-------------------------------------------------------------------------------

The source of this document is in WeierstrassSemigroups.m2:3264:0.