This is Msolve.info, produced by Macaulay2, version 1.25.05

Msolve -- Macaulay2 interface for msolve; computes real solutions and Groebner basis, etc.
******************************************************************************************

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

This package provides a Macaulay2 interface for the msolve library [1]
developed by Jérémy Berthomieu, Christian Eder, and Mohab Safey El Din.

The package has functions to compute Groebner basis, in GRevLex (Macaulay2Doc),
order only, for ideals with rational or finite field
coefficients. Finite field characteristics must be less than $2^{31}$. There
are also functions to compute elimination ideals, for ideals with rational or
finite field coefficients.

The saturation (Saturation), of an ideal by a single polynomial
may be computed for ideals with finite field coefficients, again with
characteristic less than $2^{31}$.

For zero dimensional polynomial ideals, with integer or rational coefficients,
there are functions to compute all real solutions, and to compute a rational
univariate representation of all (complex) solutions.

The M2 interface assumes that the binary executable is named "msolve" is on the
executable path.

For all functions the option Verbosity can be used. It has levels 0, 1, 2. The
default is 0.

Msolve supports parallel computations. The option Threads is used to set this.
The default value is allowableThreads, but this can be set manually by the user
when calling a function. E.g. for an ideal I:

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y,z]                                                           |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : I = ideal(x, y, z)                                                      |
|                                                                             |
|o2 = ideal (x, y, z)                                                         |
|                                                                             |
|o2 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+
|i3 : msolveGB(I, Verbosity => 2, Threads => 6)                               |
| -- running: ${prefix}/libexec/Macaulay2/bin/msolve -g 2 -t 6 -v 2 -f /tmp/M2|
|                                                                             |
|--------------- INPUT DATA ---------------                                   |
|#variables                       3                                           |
|#equations                       3                                           |
|#invalid equations               0                                           |
|field characteristic             0                                           |
|homogeneous input?               1                                           |
|signature-based computation      0                                           |
|monomial order                 DRL                                           |
|basis hash table resetting     OFF                                           |
|linear algebra option            2                                           |
|initial hash table size     131072 (2^17)                                    |
|max pair selection             ALL                                           |
|reduce gb                        1                                           |
|#threads                         6                                           |
|info level                       2                                           |
|generate pbm files               0                                           |
|------------------------------------------                                   |
|                                                                             |
|Legend for f4 information                                                    |
|--------------------------------------------------------                     |
|deg       current degree of pairs selected in this round                     |
|sel       number of pairs selected in this round                             |
|pairs     total number of pairs in pair list                                 |
|mat       matrix dimensions (# rows x # columns)                             |
|density   density of the matrix                                              |
|new data  # new elements for basis in this round                             |
|          # zero reductions during linear algebra                            |
|time(rd)  time of the current f4 round in seconds given                      |
|          for real and cpu time                                              |
|--------------------------------------------------------                     |
|                                                                             |
|deg     sel   pairs        mat          density            new data         t|
|-----------------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
|reduce final basis        3 x 3          33.33%        3 new       0 zero    |
|-----------------------------------------------------------------------------|
|                                                                             |
|---------------- TIMINGS ----------------                                    |
|overall(elapsed)        0.02 sec                                             |
|overall(cpu)            0.01 sec                                             |
|select                  0.00 sec   0.0%                                      |
|symbolic prep.          0.00 sec   0.0%                                      |
|update                  0.02 sec  98.6%                                      |
|convert                 0.00 sec   0.5%                                      |
|linear algebra          0.00 sec   0.1%                                      |
|reduce gb               0.00 sec   0.0%                                      |
|-----------------------------------------                                    |
|                                                                             |
|---------- COMPUTATIONAL DATA -----------                                    |
|size of basis                     3                                          |
|#terms in basis                   3                                          |
|#pairs reduced                    0                                          |
|#GM criterion                     3                                          |
|#redundant elements               0                                          |
|#rows reduced                     3                                          |
|#zero reductions                  0                                          |
|max. matrix data                  3 x 3 (33.333%)                            |
|max. symbolic hash table size  2^11                                          |
|max. basis hash table size     2^16                                          |
|-----------------------------------------                                    |
|                                                                             |
|                                                                             |
|---------- COMPUTATIONAL DATA -----------                                    |
|[3]                                                                          |
|#polynomials to lift              3                                          |
|-----------------------------------------                                    |
|                                                                             |
|---------------- TIMINGS ----------------                                    |
|multi-mod overall(elapsed)      0.05 sec                                     |
|learning phase                  0.00 Gops/sec                                |
|application phase               0.00 Gops/sec                                |
|-----------------------------------------                                    |
|                                                                             |
|multi-modular steps                                                          |
|-----------------------------------------------------------------------------|
|{1}(->2){2}<100.00%>                                                         |
|                                                                             |
|-----------------------------------------------------------------------------|
|msolve overall time           0.09 sec (elapsed) /  0.13 sec (cpu)           |
|-----------------------------------------------------------------------------|
|                                                                             |
|-----------------------------------------------------------------------------|
|                                                                             |
|                                                                             |
|---------- COMPUTATIONAL DATA -----------                                    |
|Max coeff. bitsize                1                                          |
|#primes                           3                                          |
|#bad primes                       0                                          |
|-----------------------------------------                                    |
|                                                                             |
|---------------- TIMINGS ----------------                                    |
|CRT     (elapsed)               0.01 sec                                     |
|ratrecon(elapsed)               0.00 sec                                     |
|-----------------------------------------                                    |
|                                                                             |
|o3 = | z y x |                                                               |
|                                                                             |
|             1      3                                                        |
|o3 : Matrix R  <-- R                                                         |
|-----------------------------------------------------------------------------|
|-159043-0/0-in.ms -o /tmp/M2-159043-0/0-out.ms                               |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|ime(rd) in sec (real|cpu)                                                    |
|-------------------------                                                    |
|-------------------------                                                    |
|     0.00 | 0.00                                                             |
|-------------------------                                                    |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|                                                                             |
|-------------------------                                                    |
|                                                                             |
|                                                                             |
|-------                                                                      |
|                                                                             |
|-------                                                                      |
|                                                                             |
|-------------------------                                                    |
+-----------------------------------------------------------------------------+

References
==========

[1] The msolve library: https://msolve.lip6.fr;

Authors
=======

  * Martin Helmer (see http://martin-helmer.com/ ) <mhelmer@ncsu.edu>
  * Mike Stillman (see https://math.cornell.edu/michael-e-stillman )
    <mike@math.cornell.edu>
  * Anton Leykin (see https://antonleykin.math.gatech.edu/ )
    <leykin@math.gatech.edu>

Version
=======

This documentation describes version 1.24.05 of Msolve.

Citation
========

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

+----------------------------------------------------------------------------+
|@misc{MsolveSource,                                                         |
|  title = {{Msolve: A \emph{Macaulay2} package. Version~1.24.05}},          |
|  author = {Martin Helmer and Mike Stillman and Anton Leykin},              |
|  howpublished = {A \emph{Macaulay2} package available at                   |
|    \url{https://github.com/Macaulay2/M2/tree/master/M2/Macaulay2/packages}}|
|}                                                                           |
|                                                                            |
+----------------------------------------------------------------------------+

Exports
=======

  * Types
      * QQi -- the class of all rational intervals
  * Functions and commands
      * msolveEliminate -- compute the elimination
        ideal of a given ideal
      * msolveGB -- compute generators of a Groebner basis in
        GRevLex order
      * msolveLeadMonomials -- compute the leading
        monomials of a Groebner basis in GRevLex order
      * msolveRealSolutions -- compute all real
        solutions to a zero dimensional system using symbolic methods
      * msolveRUR -- compute the rational univariate
        representation using symbolic methods
      * msolveSaturate -- compute a Groebner basis for
        the saturation of an ideal by a single polynomial in GRevLex order
  * Methods
      * diameter(QQi) (missing documentation)
      * interval(QQi) (missing documentation)
      * lift(QQi,type of Number) (missing documentation)
      * "msolveEliminate(Ideal,List)" -- see msolveEliminate,
        -- compute the elimination ideal of a given ideal
      * "msolveEliminate(Ideal,RingElement)" -- see msolveEliminate,
        -- compute the elimination ideal of a given ideal
      * "msolveEliminate(List,Ideal)" -- see msolveEliminate,
        -- compute the elimination ideal of a given ideal
      * "msolveEliminate(RingElement,Ideal)" -- see msolveEliminate,
        -- compute the elimination ideal of a given ideal
      * "msolveGB(Ideal)" -- see msolveGB, -- compute
        generators of a Groebner basis in GRevLex order
      * "msolveLeadMonomials(Ideal)" -- see msolveLeadMonomials,
        -- compute the leading monomials of a Groebner
        basis in GRevLex order
      * "msolveRealSolutions(Ideal)" -- see msolveRealSolutions,
        -- compute all real solutions to a zero
        dimensional system using symbolic methods
      * "msolveRealSolutions(Ideal,Ring)" -- see msolveRealSolutions,
        -- compute all real solutions to a zero
        dimensional system using symbolic methods
      * "msolveRealSolutions(Ideal,RingFamily)" -- see
        msolveRealSolutions, -- compute all real solutions
        to a zero dimensional system using symbolic methods
      * "msolveRUR(Ideal)" -- see msolveRUR, -- compute the
        rational univariate representation using symbolic methods
      * "msolveSaturate(Ideal,RingElement)" -- see msolveSaturate,
        -- compute a Groebner basis for the saturation of an
        ideal by a single polynomial in GRevLex order
      * Number == QQi (missing documentation)
      * precision(QQi) (missing documentation)
      * promote(Number,type of QQi) (missing documentation)
      * QQi == Number (missing documentation)
      * ring(QQi) (missing documentation)

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

The object Msolve, is a package (Macaulay2Doc),
defined in Msolve.m2, with auxiliary files in Msolve/.

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

The source of this document is in Msolve.m2:636:0.

msolveEliminate -- compute the elimination ideal of a given ideal
*****************************************************************

  * Usage:
        msolveEliminate(I,elimVars)
  * Inputs:
      * I, an ideal (Macaulay2Doc), in a polynomial ring with
        GRevLex (Macaulay2Doc), order and coefficients over
        ZZ/p (Macaulay2Doc), in characteristic less than $2^{31}$
      * elimVars, a list (Macaulay2Doc), of variables in the same
        ring as I, these variables will be eliminated
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * GB, a matrix (Macaulay2Doc), whose columns are generators
        for the elimination ideal

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

This function takes as input a polynomial ideal and computes the elimination
ideal given by eliminating the variables specified in the inputted list.

The behavior is very different over finite (prime) fields, and the rationals.
Over QQ (Macaulay2Doc), the subideal over a smaller set of variables
eliminating the given ones is returned. Over a finite field, the Groebner basis
in the product order eliminating the given block of variables is returned
(warning: this is a copy of the ring with potentially permuted variables).

First an example over the rationals.

+---------------------------------------------------------------+
|i1 : R = QQ[x,a,b,c,d]                                         |
|                                                               |
|o1 = R                                                         |
|                                                               |
|o1 : PolynomialRing                                            |
+---------------------------------------------------------------+
|i2 : f = 7*x^2+a*x+b                                           |
|                                                               |
|       2                                                       |
|o2 = 7x  + x*a + b                                             |
|                                                               |
|o2 : R                                                         |
+---------------------------------------------------------------+
|i3 : g = 2*x^2+c*x+d                                           |
|                                                               |
|       2                                                       |
|o3 = 2x  + x*c + d                                             |
|                                                               |
|o3 : R                                                         |
+---------------------------------------------------------------+
|i4 : M2elim=eliminate(x,ideal(f,g))                            |
|                                                               |
|                        2     2               2              2 |
|o4 = ideal(2a*b*c - 7b*c  - 2a d + 7a*c*d - 4b  + 28b*d - 49d )|
|                                                               |
|o4 : Ideal of R                                                |
+---------------------------------------------------------------+
|i5 : Msolveelim=msolveEliminate(x,ideal(f,g))                  |
|                                                               |
|                        2     2               2              2 |
|o5 = ideal(2a*b*c - 7b*c  - 2a d + 7a*c*d - 4b  + 28b*d - 49d )|
|                                                               |
|o5 : Ideal of QQ[a..d]                                         |
+---------------------------------------------------------------+
|i6 : sub(M2elim,ring Msolveelim)==Msolveelim                   |
|                                                               |
|o6 = true                                                      |
+---------------------------------------------------------------+

We can also work over a finite field. Here we get the full Groebner basis in
the permuted variables with a block order.

+-----------------------------------------------------------------------------+
|i7 : R = ZZ/1073741827[x,y,a,b,c,d]                                          |
|                                                                             |
|o7 = R                                                                       |
|                                                                             |
|o7 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i8 : f = c*x^2+a*x+b*y^2+d*x*y+y                                             |
|                                                                             |
|      2     2                                                                |
|o8 = y b + x c + x*y*d + x*a + y                                             |
|                                                                             |
|o8 : R                                                                       |
+-----------------------------------------------------------------------------+
|i9 : g = diff(x,f)                                                           |
|                                                                             |
|o9 = 2x*c + y*d + a                                                          |
|                                                                             |
|o9 : R                                                                       |
+-----------------------------------------------------------------------------+
|i10 : h = diff(y,f)                                                          |
|                                                                             |
|o10 = 2y*b + x*d + 1                                                         |
|                                                                             |
|o10 : R                                                                      |
+-----------------------------------------------------------------------------+
|i11 : M2elim = eliminate({x,y}, ideal(f,g,h))                                |
|                                                                             |
|             2                                                               |
|o11 = ideal(a b - a*d + c)                                                   |
|                                                                             |
|o11 : Ideal of R                                                             |
+-----------------------------------------------------------------------------+
|i12 : Msolveelim = msolveEliminate({x,y}, ideal(f,g,h))                      |
|                                                                             |
|              2                             2                      2         |
|o12 = ideal (a b - a*d + c, y*a*d - 2y*c + a , y*b*c - 268435457y*d  -       |
|      -----------------------------------------------------------------------|
|      268435457a*d - 536870913c, y*a*b + 536870913y*d - 536870913a, x*d +    |
|      -----------------------------------------------------------------------|
|      2y*b + 1, x*c - 536870913y*d - 536870913a, x*a + y)                    |
|                                                                             |
|                   ZZ                                                        |
|o12 : Ideal of ----------[x..y, a..d]                                        |
|               1073741827                                                    |
+-----------------------------------------------------------------------------+
|i13 : M2elim_0 == sub(Msolveelim_0, R)                                       |
|                                                                             |
|o13 = true                                                                   |
+-----------------------------------------------------------------------------+

Ways to use msolveEliminate:
============================

  * "msolveEliminate(Ideal,List)"
  * "msolveEliminate(Ideal,RingElement)"
  * "msolveEliminate(List,Ideal)"
  * "msolveEliminate(RingElement,Ideal)"

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

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

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

The source of this document is in Msolve.m2:636:0.

msolveGB -- compute generators of a Groebner basis in GRevLex order
*******************************************************************

  * Usage:
        msolveGB(I)
  * Inputs:
      * I, an ideal (Macaulay2Doc), in a polynomial ring with
        GRevLex (Macaulay2Doc), order and coefficients over
        QQ (Macaulay2Doc), or ZZ/p (Macaulay2Doc), in
        characteristic less than $2^{31}$
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * GB, a matrix (Macaulay2Doc), whose columns form a
        Groebner basis for the input ideal I, in the GRevLex order

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

This functions uses the F4 implementation in the msolve package to compute a
Groebner basis, in GRevLex order, of a polynomial ideal with either rational
coefficients or finite field coefficients with characteristic less than
$2^{31}$. If the input ideal is a polynomial ring with monomial order other
than GRevLex a GRevLex basis is returned (and no warning is given). The input
ideal may also be given in a ring with integer coefficients, in this case a
Groebner basis for the given ideal over the rationals  will be computed,
denominators will be cleared, and the output will be a Groebner basis over the
rationals in GRevLex order with integer coefficients.

First an example over a finite field

+-----------------------------------------------------------------------------+
|i1 : R=ZZ/1073741827[z_1..z_3]                                               |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : I=ideal(7*z_1*z_2+5*z_2*z_3+z_3^2+z_1+5*z_3+10,8*z_1^2+13*z_1*z_3+10*z_3|
|                                                                             |
|                             2                    2               2          |
|o2 = ideal (7z z  + 5z z  + z  + z  + 5z  + 10, 8z  + 13z z  + 10z  + z  +   |
|              1 2     2 3    3    1     3         1      1 3      3    1     |
|     ------------------------------------------------------------------------|
|     z )                                                                     |
|      2                                                                      |
|                                                                             |
|o2 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^2+z_2+z_1)                                                                  |
+-----------------------------------------------------------------------------+
|i3 : gB=msolveGB I                                                           |
|                                                                             |
|o3 = | z_1z_2-460175068z_2z_3-306783379z_3^2-306783379z_1-460175068z_3+      |
|     ------------------------------------------------------------------------|
|     153391691 z_1^2+134217730z_1z_3+268435458z_3^2-402653185z_1-402653185z_2|
|     ------------------------------------------------------------------------|
|     z_1z_3^2+19173957z_2z_3^2-479349029z_3^3-402653186z_2^2+460175073z_1z_3+|
|     ------------------------------------------------------------------------|
|     134217729z_2z_3+153391693z_3^2+10z_1+402653185z_2-364305253z_3+268435458|
|     ------------------------------------------------------------------------|
|     z_2^2z_3^2+59398484z_2z_3^3+347252676z_3^4+516309900z_2^3+91382283z_2^2z|
|     ------------------------------------------------------------------------|
|     _3+27414685z_2z_3^2+223886594z_3^3-466049644z_2^2-68536713z_2z_3+       |
|     ------------------------------------------------------------------------|
|     310699764z_3^2-310699763z_2+411220277z_3-68536709 |                     |
|                                                                             |
|             1      4                                                        |
|o3 : Matrix R  <-- R                                                         |
+-----------------------------------------------------------------------------+
|i4 : lT=monomialIdeal leadTerm gB                                            |
|                                                                             |
|                     2           2   2 2                                     |
|o4 = monomialIdeal (z , z z , z z , z z )                                    |
|                     1   1 2   1 3   2 3                                     |
|                                                                             |
|o4 : MonomialIdeal of R                                                      |
+-----------------------------------------------------------------------------+
|i5 : degree lT                                                               |
|                                                                             |
|o5 = 4                                                                       |
+-----------------------------------------------------------------------------+
|i6 : dim lT                                                                  |
|                                                                             |
|o6 = 1                                                                       |
+-----------------------------------------------------------------------------+

Now the same example over the rationals.

+-----------------------------------------------------------------------------+
|i7 : R=QQ[z_1..z_3]                                                          |
|                                                                             |
|o7 = R                                                                       |
|                                                                             |
|o7 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i8 : I=ideal(7*z_1*z_2+5*z_2*z_3+z_3^2+z_1+5*z_3+10,8*z_1^2+13*z_1*z_3+10*z_3|
|                                                                             |
|                             2                    2               2          |
|o8 = ideal (7z z  + 5z z  + z  + z  + 5z  + 10, 8z  + 13z z  + 10z  + z  +   |
|              1 2     2 3    3    1     3         1      1 3      3    1     |
|     ------------------------------------------------------------------------|
|     z )                                                                     |
|      2                                                                      |
|                                                                             |
|o8 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^2+z_2+z_1)                                                                  |
+-----------------------------------------------------------------------------+
|i9 : gB=msolveGB I                                                           |
|                                                                             |
|o9 = | 7z_1z_2+5z_2z_3+z_3^2+z_1+5z_3+10 8z_1^2+13z_1z_3+10z_3^2+z_1+z_2     |
|     ------------------------------------------------------------------------|
|     56z_1z_3^2-235z_2z_3^2+51z_3^3-49z_2^2+240z_1z_3+35z_2z_3+192z_3^2+560z_|
|     ------------------------------------------------------------------------|
|     1-7z_2+545z_3+70 235z_2^2z_3^2-11z_2z_3^3+8z_3^4+49z_2^3-35z_2^2z_3+13z_|
|     ------------------------------------------------------------------------|
|     2z_3^2+67z_3^3+14z_2^2-150z_2z_3+304z_3^2-69z_2+665z_3+790 |            |
|                                                                             |
|             1      4                                                        |
|o9 : Matrix R  <-- R                                                         |
+-----------------------------------------------------------------------------+
|i10 : (ideal gB)== ideal(groebnerBasis I)                                    |
|                                                                             |
|o10 = true                                                                   |
+-----------------------------------------------------------------------------+
|i11 : lT=monomialIdeal leadTerm gB                                           |
|                                                                             |
|                      2           2   2 2                                    |
|o11 = monomialIdeal (z , z z , z z , z z )                                   |
|                      1   1 2   1 3   2 3                                    |
|                                                                             |
|o11 : MonomialIdeal of R                                                     |
+-----------------------------------------------------------------------------+
|i12 : degree lT                                                              |
|                                                                             |
|o12 = 4                                                                      |
+-----------------------------------------------------------------------------+
|i13 : dim lT                                                                 |
|                                                                             |
|o13 = 1                                                                      |
+-----------------------------------------------------------------------------+

Ways to use msolveGB:
=====================

  * "msolveGB(Ideal)"

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

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

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

The source of this document is in Msolve.m2:636:0.

msolveLeadMonomials -- compute the leading monomials of a Groebner basis in GRevLex order
*****************************************************************************************

  * Usage:
        msolveLeadMonomials(I)
  * Inputs:
      * I, an ideal (Macaulay2Doc), in a polynomial ring with
        GRevLex (Macaulay2Doc), order and coefficients over
        QQ (Macaulay2Doc), or ZZ/p (Macaulay2Doc), in
        characteristic less than $2^{31}$
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * GB, a matrix (Macaulay2Doc), whose columns are the
        leading monomials (of a Groebner basis for) the input ideal I, in the
        GRevLex order

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

This functions uses the F4 implementation in the msolve package to compute
leading monomials via a Groebner basis, in GRevLex order, of a polynomial ideal
with either rational coefficients or finite field coefficients with
characteristic less than $2^{31}$. If the input ideal is a polynomial ring with
monomial order other than GRevLex a GRevLex basis is returned (and no warning
is given). The input ideal may also be given in a ring with integer
coefficients, in this case a Groebner basis for the given ideal over the
rationals  will be computed, denominators will be cleared, and the output will
be a Groebner basis over the rationals in GRevLex order with integer
coefficients.

First an example over a finite field

+-----------------------------------------------------------------------------+
|i1 : R=ZZ/1073741827[z_1..z_3]                                               |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : I=ideal(7*z_1*z_2+5*z_2*z_3+z_3^2+z_1+5*z_3+10,8*z_1^2+13*z_1*z_3+10*z_3|
|                                                                             |
|                             2                    2               2          |
|o2 = ideal (7z z  + 5z z  + z  + z  + 5z  + 10, 8z  + 13z z  + 10z  + z  +   |
|              1 2     2 3    3    1     3         1      1 3      3    1     |
|     ------------------------------------------------------------------------|
|     z )                                                                     |
|      2                                                                      |
|                                                                             |
|o2 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^2+z_2+z_1)                                                                  |
+-----------------------------------------------------------------------------+
|i3 : lm=monomialIdeal msolveLeadMonomials I                                  |
|                                                                             |
|                     2           2   2 2                                     |
|o3 = monomialIdeal (z , z z , z z , z z )                                    |
|                     1   1 2   1 3   2 3                                     |
|                                                                             |
|o3 : MonomialIdeal of R                                                      |
+-----------------------------------------------------------------------------+
|i4 : degree lm                                                               |
|                                                                             |
|o4 = 4                                                                       |
+-----------------------------------------------------------------------------+
|i5 : dim lm                                                                  |
|                                                                             |
|o5 = 1                                                                       |
+-----------------------------------------------------------------------------+

Now the same example over the rationals; note over the rationals msolve first
computes over a finite field and when only the leading monomials are asked for
the correct leading monomials will be returned but the full Groebner basis over
QQ (Macaulay2Doc), will not be computed. Hence if only degree and
dimension are desired this command will often be faster that the Groebner basis
command.

+-----------------------------------------------------------------------------+
|i6 : R=QQ[z_1..z_3]                                                          |
|                                                                             |
|o6 = R                                                                       |
|                                                                             |
|o6 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i7 : I=ideal(7*z_1*z_2+5*z_2*z_3+z_3^2+z_1+5*z_3+10,8*z_1^2+13*z_1*z_3+10*z_3|
|                                                                             |
|                             2                    2               2          |
|o7 = ideal (7z z  + 5z z  + z  + z  + 5z  + 10, 8z  + 13z z  + 10z  + z  +   |
|              1 2     2 3    3    1     3         1      1 3      3    1     |
|     ------------------------------------------------------------------------|
|     z )                                                                     |
|      2                                                                      |
|                                                                             |
|o7 : Ideal of R                                                              |
|-----------------------------------------------------------------------------|
|^2+z_2+z_1)                                                                  |
+-----------------------------------------------------------------------------+
|i8 : lm=monomialIdeal msolveLeadMonomials I                                  |
|                                                                             |
|                     2           2   2 2                                     |
|o8 = monomialIdeal (z , z z , z z , z z )                                    |
|                     1   1 2   1 3   2 3                                     |
|                                                                             |
|o8 : MonomialIdeal of R                                                      |
+-----------------------------------------------------------------------------+
|i9 : lt=monomialIdeal leadTerm groebnerBasis I                               |
|                                                                             |
|                     2           2   2 2                                     |
|o9 = monomialIdeal (z , z z , z z , z z )                                    |
|                     1   1 2   1 3   2 3                                     |
|                                                                             |
|o9 : MonomialIdeal of R                                                      |
+-----------------------------------------------------------------------------+
|i10 : lm==lt                                                                 |
|                                                                             |
|o10 = true                                                                   |
+-----------------------------------------------------------------------------+
|i11 : degree lm                                                              |
|                                                                             |
|o11 = 4                                                                      |
+-----------------------------------------------------------------------------+
|i12 : dim lm                                                                 |
|                                                                             |
|o12 = 1                                                                      |
+-----------------------------------------------------------------------------+

Ways to use msolveLeadMonomials:
================================

  * "msolveLeadMonomials(Ideal)"

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

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

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

The source of this document is in Msolve.m2:636:0.

msolveRealSolutions -- compute all real solutions to a zero dimensional system using symbolic methods
*****************************************************************************************************

  * Usage:
        msolveRealSolutions(I)
        msolveRealSolutions(I, K)
  * Inputs:
      * I, an ideal (Macaulay2Doc), which is zero dimensional, in
        a polynomial ring with coefficients over QQ (Macaulay2Doc),
      * K, a ring (Macaulay2Doc), or an instance of the type
        RingFamily (Macaulay2Doc), the field to find answers in,
        which must be one of QQi, (default), see QQ (Macaulay2Doc),
        see RR (Macaulay2Doc), or RRi (Macaulay2Doc),
        (possibly with specified precision)
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * a list (Macaulay2Doc), of lists; each entry in the list
        consists of a list representing the coordinates of a solution. By
        default each solution coordinate value is also represented by a
        rational interval, consisting of a two element list of rational
        numbers, {a, b}, this means that that coordinate of the solution has a
        value greater than or equal to a and less than or equal to b. This
        interval is computed symbolically and its correctness is guaranteed by
        exact methods.

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

This functions uses the msolve package to compute the real solutions to a zero
dimensional polynomial ideal with either integer or rational coefficients.

The second input is optional, and indicates the alternative ways to provide
output either using an exact rational interval QQi, a real interval
RRi (Macaulay2Doc), or by taking a rational or real approximation of
the midpoint of the intervals.

+-----------------------------------------------------------------------------+
|i1 : R = QQ[x,y]                                                             |
|                                                                             |
|o1 = R                                                                       |
|                                                                             |
|o1 : PolynomialRing                                                          |
+-----------------------------------------------------------------------------+
|i2 : I = ideal {(x-1)*x, y^2-5}                                              |
|                                                                             |
|             2       2                                                       |
|o2 = ideal (x  - x, y  - 5)                                                  |
|                                                                             |
|o2 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+
|i3 : rationalIntervalSols = msolveRealSolutions I                            |
|                                                                             |
|        8589934591  8589934593    4801919417  9603838835                     |
|o3 = {{{----------, ----------}, {----------, ----------}}, {{-              |
|        8589934592  8589934592    2147483648  4294967296                     |
|     ------------------------------------------------------------------------|
|                                  317944045                                  |
|     ------------------------------------------------------------------,     |
|     421249166674228746791672110734681729275580381602196445017243910144      |
|     ------------------------------------------------------------------------|
|                                  7036295741                                 |
|     -------------------------------------------------------------------},   |
|     6739986666787659948666753771754907668409286105635143120275902562304     |
|     ------------------------------------------------------------------------|
|      4801919417  9603838835      8589934591  8589934593      9603838835     |
|     {----------, ----------}}, {{----------, ----------}, {- ----------, -  |
|      2147483648  4294967296      8589934592  8589934592      4294967296     |
|     ------------------------------------------------------------------------|
|     4801919417                            5296878921                        |
|     ----------}}, {{- --------------------------------------------------,   |
|     2147483648        93536104789177786765035829293842113257979682750464    |
|     ------------------------------------------------------------------------|
|                         615866991                          9603838835       |
|     -------------------------------------------------}, {- ----------, -    |
|     5846006549323611672814739330865132078623730171904      4294967296       |
|     ------------------------------------------------------------------------|
|     4801919417                                                              |
|     ----------}}}                                                           |
|     2147483648                                                              |
|                                                                             |
|o3 : List                                                                    |
+-----------------------------------------------------------------------------+
|i4 : rationalApproxSols = msolveRealSolutions(I, QQ)                         |
|                                                                             |
|          19207677669                                 1949191021             |
|o4 = {{1, -----------}, {----------------------------------------------------|
|           8589934592    1347997333357531989733350754350981533681857221127028|
|     ------------------------------------------------------------------------|
|                       19207677669         19207677669                       |
|     ----------------, -----------}, {1, - -----------},                     |
|     6240551805124608   8589934592          8589934592                       |
|     ------------------------------------------------------------------------|
|                           4556992935                        19207677669     |
|     {---------------------------------------------------, - -----------}}   |
|      187072209578355573530071658587684226515959365500928     8589934592     |
|                                                                             |
|o4 : List                                                                    |
+-----------------------------------------------------------------------------+
|i5 : floatIntervalSols = msolveRealSolutions(I, RRi)                         |
|                                                                             |
|o5 = {{[1,1], [2.23607,2.23607]}, {[-7.54765e-58,1.04396e-57],               |
|     ------------------------------------------------------------------------|
|     [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},                       |
|     ------------------------------------------------------------------------|
|     {[-5.66292e-41,1.05348e-40], [-2.23607,-2.23607]}}                      |
|                                                                             |
|o5 : List                                                                    |
+-----------------------------------------------------------------------------+
|i6 : floatIntervalSols = msolveRealSolutions(I, RRi_10)                      |
|                                                                             |
|o6 = {{[.999512,1.00049], [2.23535,2.23633]}, {[-7.54852e-58,1.04422e-57],   |
|     ------------------------------------------------------------------------|
|     [2.23535,2.23633]}, {[.999512,1.00049], [-2.23633,-2.23535]},           |
|     ------------------------------------------------------------------------|
|     {[-5.66349e-41,1.05378e-40], [-2.23633,-2.23535]}}                      |
|                                                                             |
|o6 : List                                                                    |
+-----------------------------------------------------------------------------+
|i7 : floatApproxSols = msolveRealSolutions(I, RR)                            |
|                                                                             |
|o7 = {{1, 2.23607}, {1.44599e-58, 2.23607}, {1, -2.23607}, {2.43595e-41,     |
|     ------------------------------------------------------------------------|
|     -2.23607}}                                                              |
|                                                                             |
|o7 : List                                                                    |
+-----------------------------------------------------------------------------+
|i8 : floatApproxSols = msolveRealSolutions(I, RR_10)                         |
|                                                                             |
|o8 = {{1, 2.23584}, {1.44685e-58, 2.23584}, {1, -2.23584}, {2.43714e-41,     |
|     ------------------------------------------------------------------------|
|     -2.23584}}                                                              |
|                                                                             |
|o8 : List                                                                    |
+-----------------------------------------------------------------------------+

Note in cases where solutions have multiplicity this is not reflected in the
output. While the solver does not return multiplicities, it reliably outputs
the verified isolating intervals for multiple solutions.

+-----------------------------------------------------------------------------+
|i9 : I = ideal {(x-1)*x^3, (y^2-5)^2}                                        |
|                                                                             |
|             4    3   4      2                                               |
|o9 = ideal (x  - x , y  - 10y  + 25)                                         |
|                                                                             |
|o9 : Ideal of R                                                              |
+-----------------------------------------------------------------------------+
|i10 : floatApproxSols = msolveRealSolutions(I, RRi)                          |
|                                                                             |
|o10 = {{[1,1], [2.23607,2.23607]}, {[-7.54765e-58,1.04396e-57],              |
|      -----------------------------------------------------------------------|
|      [2.23607,2.23607]}, {[1,1], [-2.23607,-2.23607]},                      |
|      -----------------------------------------------------------------------|
|      {[-5.66292e-41,1.05348e-40], [-2.23607,-2.23607]}}                     |
|                                                                             |
|o10 : List                                                                   |
+-----------------------------------------------------------------------------+

Ways to use msolveRealSolutions:
================================

  * "msolveRealSolutions(Ideal)"
  * "msolveRealSolutions(Ideal,Ring)"
  * "msolveRealSolutions(Ideal,RingFamily)"

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

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

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

The source of this document is in Msolve.m2:636:0.

msolveRUR -- compute the rational univariate representation using symbolic methods
**********************************************************************************

  * Usage:
        msolveRUR(I)
  * Inputs:
      * I, an ideal (Macaulay2Doc), which is zero dimensional, in
        a polynomial ring with coefficients over QQ (Macaulay2Doc),
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * RUR, a hash table (Macaulay2Doc), with 6 keys giving
        the rational univariate representation of I

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

This functions uses the msolve package to compute the rational univariate
representation (RUR) of a zero dimensional polynomial ideal with either integer
or rational coefficients.

The RUR gives a parametrization for all complex solutions to the input system.
For a complete definition of the RUR see the paper: Rouillier, Fabrice (1999).
"Solving Zero-Dimensional Systems Through the Rational Univariate
Representation". Appl. Algebra Eng. Commun. Comput. 9 (9): 433–461.

If I is a zero dimensional ideal in QQ[x_1..x_n] then the RUR is given by:

(x_1,..,x_n)={ (-v_1(T)/w'(T), .. , -v_n(T)/w'(T)) | w(T)=0}

The output is a hash table with 6 keys.

The key "degree" is the number of solutions to I, counted with multiplicity.

The key "findRootsUniPoly" gives the polynomial w(T) above.

The key "denominator"  gives the polynomial w'(T), which is the derivative of
w(T) and is the denominator of each coordinate above.

The key "numerator" gives a list {v_1(T), .. , v_n(T)} of length n above, with
n the number of variables, where the polynomial v_i(T) gives the numerator of
the ith coordinate.

The key "var" gives the variable name in the univariate polynomial ring; by
default this is: "T".

The key "T" gives the linear relation between the variables of the ring of I
and the single variable, which is denoted T above.

A simple example, where the input ideal is zero dimensional and radical.

+---------------------------------------------------------------------+
|i1 : R = QQ[x_1..x_3]                                                |
|                                                                     |
|o1 = R                                                               |
|                                                                     |
|o1 : PolynomialRing                                                  |
+---------------------------------------------------------------------+
|i2 : f = (x_1-1)                                                     |
|                                                                     |
|o2 = x  - 1                                                          |
|      1                                                              |
|                                                                     |
|o2 : R                                                               |
+---------------------------------------------------------------------+
|i3 : g = (x_2-2)                                                     |
|                                                                     |
|o3 = x  - 2                                                          |
|      2                                                              |
|                                                                     |
|o3 : R                                                               |
+---------------------------------------------------------------------+
|i4 : h = (x_3^2-9)                                                   |
|                                                                     |
|      2                                                              |
|o4 = x  - 9                                                          |
|      3                                                              |
|                                                                     |
|o4 : R                                                               |
+---------------------------------------------------------------------+
|i5 : I = ideal (f,g,h)                                               |
|                                                                     |
|                             2                                       |
|o5 = ideal (x  - 1, x  - 2, x  - 9)                                  |
|             1       2       3                                       |
|                                                                     |
|o5 : Ideal of R                                                      |
+---------------------------------------------------------------------+
|i6 : decompose I                                                     |
|                                                                     |
|o6 = {ideal (x  - 3, x  - 2, x  - 1), ideal (x  + 3, x  - 2, x  - 1)}|
|              3       2       1               3       2       1      |
|                                                                     |
|o6 : List                                                            |
+---------------------------------------------------------------------+
|i7 : rur=msolveRUR(I)                                                |
|                                                                     |
|o7 = HashTable{"degree" => 2                  }                      |
|               "denominator" => 2T                                   |
|                                      2                              |
|               "findRootsUniPoly" => T  - 9                          |
|                                            2                        |
|               "numerator" => {-2T, -4T, -2T }                       |
|               "T" => x                                              |
|                       3                                             |
|               "var" => T                                            |
|                                                                     |
|o7 : HashTable                                                       |
+---------------------------------------------------------------------+
|i8 : factor rur#"findRootsUniPoly"                                   |
|                                                                     |
|o8 = (T - 3)(T + 3)                                                  |
|                                                                     |
|o8 : Expression of class Product                                     |
+---------------------------------------------------------------------+
|i9 : sols=-1*(rur#"numerator")                                       |
|                                                                     |
|                2                                                    |
|o9 = {2T, 4T, 2T }                                                   |
|                                                                     |
|o9 : List                                                            |
+---------------------------------------------------------------------+
|i10 : denom= rur#"denominator"                                       |
|                                                                     |
|o10 = 2T                                                             |
|                                                                     |
|o10 : QQ[T]                                                          |
+---------------------------------------------------------------------+
|i11 : (for s in sols list sub(s,T=>3))/sub(denom,T=>3)               |
|                                                                     |
|o11 = {1, 2, 3}                                                      |
|                                                                     |
|o11 : List                                                           |
+---------------------------------------------------------------------+
|i12 : (for s in sols list sub(s,T=>-3))/sub(denom,T=>-3)             |
|                                                                     |
|o12 = {1, 2, -3}                                                     |
|                                                                     |
|o12 : List                                                           |
+---------------------------------------------------------------------+

In cases where the input ideal has dimension greater than zero an error will be
returned.

Ways to use msolveRUR:
======================

  * "msolveRUR(Ideal)"

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

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

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

The source of this document is in Msolve.m2:636:0.

msolveSaturate -- compute a Groebner basis for the saturation of an ideal by a single polynomial in GRevLex order
*****************************************************************************************************************

  * Usage:
        msolveSaturate(I)
  * Inputs:
      * I, an ideal (Macaulay2Doc), in a polynomial ring with
        GRevLex (Macaulay2Doc), order and coefficients over
        ZZ/p (Macaulay2Doc), in characteristic more than $2^16$
        and less than $2^{31}$
      * f, a ring element (Macaulay2Doc), a polynomial in
        the same ring as I.
  * Optional inputs (Macaulay2Doc),:
      * Threads => an integer (Macaulay2Doc), default value 5, number
        of processor threads to use;
      * Verbosity => an integer (Macaulay2Doc), default value 0,
        level of verbosity between 0, 1, and 2;
  * Outputs:
      * GB, a matrix (Macaulay2Doc), whose columns form a
        Groebner basis for the ideal $I:f^\infty$, in the GRevLex order

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

This functions uses the F4SAT algorithm implemented in the msolve library to
compute a Groebner basis, in GRevLex order, of $I:f^\infty$, that is of the
saturation of the ideal $I$ by the principal ideal generated by the polynomial
$f$.

+----------------------------------------------+
|i1 : R=ZZ/1073741827[z_1..z_3]                |
|                                              |
|o1 = R                                        |
|                                              |
|o1 : PolynomialRing                           |
+----------------------------------------------+
|i2 : I=ideal(z_1*(z_2^2-17*z_1-z_3^3),z_1*z_2)|
|                                              |
|                 3      2      2              |
|o2 = ideal (- z z  + z z  - 17z , z z )       |
|               1 3    1 2      1   1 2        |
|                                              |
|o2 : Ideal of R                               |
+----------------------------------------------+
|i3 : satMsolve=ideal msolveSaturate(I,z_1)    |
|                                              |
|                 3                            |
|o3 = ideal (z , z  + 17z )                    |
|             2   3      1                     |
|                                              |
|o3 : Ideal of R                               |
+----------------------------------------------+
|i4 : satM2=saturate(I,z_1)                    |
|                                              |
|                 3                            |
|o4 = ideal (z , z  + 17z )                    |
|             2   3      1                     |
|                                              |
|o4 : Ideal of R                               |
+----------------------------------------------+

Note that the ring must be a polynomial ring over a finite field.

Caveat
======

Currently the F4SAT algorithm is only implemented over prime fields in
characteristic between $2^{16}$ and $2^{31}$.

Ways to use msolveSaturate:
===========================

  * "msolveSaturate(Ideal,RingElement)"

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

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

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

The source of this document is in Msolve.m2:636:0.

QQi -- the class of all rational intervals
******************************************

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

This class is similar to the class of real intervals (Macaulay2Doc),
except that the boundaries are arbitrary precision rational numbers.

Caveat
======

Currently this class is not implemented in the interpreter, which means rings
or matrices over rational intervals are not supported, and many functionalities
of RRi (Macaulay2Doc), are not yet available.

Methods that use a rational interval:
=====================================

  * diameter(QQi) (missing documentation)
  * interval(QQi) (missing documentation)
  * lift(QQi,type of Number) (missing documentation)
  * Number == QQi (missing documentation)
  * precision(QQi) (missing documentation)
  * promote(Number,type of QQi) (missing documentation)
  * QQi == Number (missing documentation)
  * ring(QQi) (missing documentation)

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

The object QQi, is a ring (Macaulay2Doc), with ancestor
classes List (Macaulay2Doc), < VisibleList (Macaulay2Doc)
< BasicList (Macaulay2Doc) <
Thing (Macaulay2Doc).

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

The source of this document is in Msolve.m2:636:0.