21.1 Brute Force: Shrinking
Our second line of attack can be slower. It finds a subset of the set of relations by applying the GB
machinery. For example, if one knows that pn is a member of the ideal generated by {p1,…,pn-1},
then the set {p1,…,pn} can be shrunk to {p1,…,pn-1}. Determining whether or not pn is a member
of the ideal generated by {p1,…,pn-1} can be partially decided by running the GB algorithm for
several iterations.
21.1.1 SmallBasis[aListOfPolynomials, anotherListOfPolynomials, iter]
-
- Aliases: None
-
- Description: SmallBasis[aListOfPolynomials,,iter] computes and returns a list aList
which is a subset of aListOfPolynomials such that the ideal generated by aList
equals the ideal generated by aListOfPolynomials . anotherListOfPolynomials adds
the feature that when one includes it in the call it just joins to the answer above
without being changed. In other words, SmallBasis computes and returns a list aList
which is a subset of aListOfPolynomials such that the ideal generated by Join[aList,
anotherListOfPolynomials] equals the ideal generated by Join[aListOfPolynomials,
anotherListOfPolynomials]. This is done via calls to NCMakeGB. NCMakeGB
iterates at most iter times.
Here is how it works: Let LP denote {p1,p2,…,pu}. First SmallBasis[LP,{},iter]
generates a partial GB for p1,p2, and reduces p3,p4,…,pu with this GB. If the result is 0,
then SmallBasis stops and returns {p1,p2}. If not SmallBasis generates GB(p1,p2,p3)
and reduces the remaining polynomials. Etc. Finally, SmallBasis returns {p1,p2,…,pk}
with the property that the partial Göbner Basis GB(p1,…,pk) reduces {p1,p2,…,pn} to
zero. Clearly, the result is very dependent on the order if the entries lie in LP. The
integer iter determines the number of iterations used to produce the partial GB’s.
SmallBasis[LP1,LP2,iter] has the same functionality as Complement[ SmallBasis[
Join[LP2,LP1], {}, iter], LP2], (i.e., SmallBasis[Join[LP2,LP1], {}, iter] minus the
set LP2) but is much faster.
-
- Arguments: aListOfPolynomials and anotherListOfPolynomials are lists of
polynomials. iter is a natural number.
-
- Comments / Limitations:
WARNING: This command calls NCMakeGB which effects the output of the WhatIsHistory command
which in turn can effect the use of the command RemoveRedundant and its variants (subsections
30.1.2, 30.1.3, 30.1.4 and 30.1.5) or the use of the command SmallBasis and its variants
(subsections 21.1.1 and 21.1.2).
21.1.2 SmallBasisByCategory[aListOfPolynomials, iter]
-
- Aliases: None
-
- Description: SmallBasisByForCategory returns a list aList which is a sorted subset of
aListOfPolynomials such
that the ideal generated by Join[aList,anotherListOfPolynomials] equals the ideal
generated by Join[aListOfPolynomials,anotherListOfPolynomials]. This is done
via calls NCMakeGB.
-
- Arguments: aListOfPolynomials is a list of polynomials. iter is a natural number.
-
- Comments / Limitations: Not available before NCAlgebra 1.2
21.1.3 ShrinkOutput[aListOfPolynomials,fileName]
-
- Aliases: None
-
- Description: ShrinkOutput can take a very long time to run on large or complicated sets of
polynomials. ShrinkOutput[aListOfPolynomials,fileName] takes the list of polynomials
in aListOfPolynomials and puts a subset of aListOfPolynomials into a file via
RegularOutput (subsection 23.3.1) This smaller subset is generated by the command
SmallBasis (subsection 21.1.1)
-
- Arguments: aListOfPolynomials is a list of polynomials. fileName is a character string
-
- Comments / Limitations: Not available before NCAlgebra 1.2