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