30.1 Removing excess relations

30.1.1 Introduction

Our first line of attack works only when the set of relations under consideration has been generated by NCMakeGB and then only either

(1) The history was recorded right after using NCMakeGB via the WhatIsHistory command.   OR
(2) There have been no calls to NCMakeGB (either directly or indirectly) since the set of relations was generated.

This approach is very fast.

If one has created a set of relations G by using NCMakeGB, then one can use history (gotten by the WhatIsHistory command — see 29.2.1 recorded during the run of NCMakeGB to find a smaller subset of G which generates the same basis. The essential idea is to take the history from the previous run of NCMakeGB and use it to construct a directed acyclic graph (DAG) representing the information. Then a fast combinatorial DAG search can be done.

Note that the WhatIsHistory command only records one way in which a certain relation is generated. For example, suppose that p5 is an S-polynomial of p1 and p2 and p5 is not reduced. It may also be the case the p5 is an S-polynomial of p3 and p4 and p5 is not reduced. If the program computed p5 by taking the S-ppolynomials of p1 and p2 first, then the fact that p5 is an S-polynomial of p3 and p4 will not be recorded.

30.1.2 RemoveRedundant[]

Aliases: None
Description: RemoveRedundant[] calls RemoveRedundant[aListOfPolynomials,history] with the default correct choices for aListOfPolynomials and history.
Arguments: None
Comments / Limitations: WARNING: The execution of this command depends upon the last NCMakeGB run which was executed. Some commands call NCMakeGB as they run such as SpreadSheet (subsection 15.2.1) and SmallBasis 21.1.1.

30.1.3 RemoveRedundant[aListOfPolynomials,history]

Aliases: None
Description: RemoveRedundant[aListOfPolynomials,history] generates a subset P of
aListOfPolynomials which generates the same ideal as aListOfPolynomials. We conjecture that this is a smallest such set whose descendents in the history DAG contain aListOfPolynomials. We conjecture that this property charachterizes P uniquely. This command is faster while maybe not as powerful at reducing as ShrinkBasis since this command relies on the history of how the GB was generated and it just extracts key ancestors. That is why the list history is included to tell the routine how the various polynomials were generated. History must have been recorded using the WhatIsHistory command from the run of GB algorithm which produced aListOfPolynomials.
Arguments: history is an output from the WhatIsHistory command. aListOfPolynomials is a list of polynomials.
Comments / Limitations: WARNING: The history one gets from the WhatIsHistory command comes from the last run of the NCMakeGB command. The NCMakeGB command is called by several other commands such as NCProcess (subsection 15.2.1 and SmallBasis and its variants 21.1.1.

30.1.4 RemoveRedundentByCategory[]

Aliases: None
Description: RemoveRedundentByCategory[] calls RemoveRedundentByCategory[aListOfPolynomials, history] with the default correct choices for aListOfPolynomials and history.
Arguments: None
Comments / Limitations: It is wise to execute WhatIsHistory to set history right after you call NCMakeGB. WARNING: This command executes on the last NCMakeGB run which was executed. Some commands call NCMakeGB as they run, like SpreadSheet (subsection 15.2.1)

30.1.5 RemoveRedundentByCategory[ aListOfPolynomials, history]

Aliases: None
Description: RemoveRedundentByCategory[aListOfPolynomials,history] generates a subset P of aListOfPolynomials which generates the same ideal as aListOfPolynomials. It is best thought of in the context of RegularOutput or a spreadsheet. Recall?? the digested relations are the polynomials involving no unknowns, single variable expressions, together with user selected relations. Let the digested relations from the list aListOfPolynomials be called D. Suppose we denote each category of undigested polynomials by Xj where j runs from 1 to the number of these categories. Then RemoveRedundentByCategory[aListOfPolynomials, history] is the union over j of RemoveRedundent[Union[D, Xj], history].
Arguments: aListOfPolynomials is a list of polynomials. history is a list from the command WhatIsHistory.
Comments / Limitations: It is wise to execute WhatIsHistory to set history right after you call NCMakeGB. WARNING: The history one gets from the WhatIsHistory command comes from the last run of the NCMakeGB command. The NCMakeGB command is called by several other commands such as NCProcess (subsection 15.2.1).