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).