RemoveRedundent requires a history and a list of polynomials. NCMakeGB records part of
what it is doing during its computation and that can be used to determine some facts about
ideal membership. This history can be though of as a directed acyclic graph (abbreviated as
dag)1.
The the list of polynomials is a subset V of all of the nodes and the output of RemoveRedundent is
another set R of nodes v in V . Let √ denote a connected path which runs from v backward in time
until it reaches a leaf. Now ends at v in the set V and may as we go backwards along it in
time leave V then come back etc. Let v(
) denote the earliest node of
in V . It belongs to
R. Indeed, R = {v(
) for all maximal connected forward flowing paths ending in V }. For
example, if some path
ends in v and the node immediately before v is not in V , then v is in
R. Now we give more formal statements and about how the RemoveRedundent algorithm
works.
Let p1,…,pn K[x1,…,xn]. Let T be a tree on the nodes {1,…,n}. We say that the tree represents the
development of p1,…,pn if it is the case that for every j = 1,…,n either
OR
Now suppose that T is a tree on {1,…,n} and it represents the development of p1,…,pn. If j is the root of the tree and k1,…,kr are the leafs of T, then pj lies in the ideal generated by pk1,…,pkr. In fact, pa lies in the ideal generated by pk1,…,pkr for every a such that both 1 ≤ a ≤ n.
Now, if a tree T represents the development of p1,…,pn and one chooses a subset {k1,…,kr}{1,…,n},
then one can consider the largest subgraph of T for which each node kℓ has no edge leading from it. Each
connected component of this subgraph will be a tree. Let To be such a connected component of T
and {ℓ1,…,ℓw} be the nodes of To. It is clear that the tree To represents the development of
pℓ1,…,pℓw.
This is the key to the function RemoveRedundent. This function takes a tree T which represents the development of p1,…,pn and a list of nodes {ℓ1,…,ℓw}. The algorithm proceeds as follows.
Let result = {ℓ1,…,ℓw};
Let unchanged = False;
while(unchanged)
unchanged = False;
temp = result;
while(unchanged is False and temp is not the empty set)
Pick ℓ temp;
Let temp = temp\{ℓ};
More here ? MARK whats this mean
end while
end while