Macaulay2 Engine
Loading...
Searching...
No Matches

◆ update_pairs()

void gbA::update_pairs ( int id)
private

Definition at line 956 of file gb-default.cpp.

957{
958 assert(gb[id] != nullptr);
959 gbelem *r = gb[id];
960 int x = gbelem_COMPONENT(r);
961
962 /* Step 1. Remove un-needed old pairs */
964
965 /* Step 2. Collect new pairs */
966 spairs new_set;
967
968 /* Step 2a: */
969 if (R->is_skew_commutative())
970 {
971 for (int i = 0; i < R->n_skew_commutative_vars(); i++)
972 if (r->lead[R->skew_variable(i)] > 0)
973 {
974 spair *s = spair_make_skew(id, i);
975 new_set.push_back(s);
976 }
977 }
978 /* Step 2b: pairs from ring elements, or 'in stone' elements */
979 for (int i = 0; i < first_gb_element; i++)
980 {
981 spair *s = spair_make_ring(id, i);
982 new_set.push_back(s);
983 }
984 /* Step 2c. pairs from the vectors themselves */
985 /* Loop through the minimal GB elements and form the s-pair */
986 for (int i = first_gb_element; i < id; i++)
987 {
988 gbelem *g = gb[i];
989 if (g && (g->minlevel & ELEM_MINGB) && gbelem_COMPONENT(g) == x)
990 {
991 spair *s = spair_make(id, i);
992 new_set.push_back(s);
993 }
994 }
995
996 /* Step 3. Minimalize this set */
998 new_set); /* Modifies new_set, inserts minimal pairs into S */
999}
GBRing * R
int first_gb_element
int gbelem_COMPONENT(gbelem *g)
spair * spair_make_ring(int i, int j)
void minimalize_pairs(spairs &new_set)
void remove_unneeded_pairs(int id)
spair * spair_make_skew(int i, int v)
spair * spair_make(int i, int j)
void gb(IntermediateBasis &F, int n)
const int ELEM_MINGB
void size_t s
Definition m2-mem.cpp:271
volatile int x
gbelem_type minlevel
Definition f4-types.hpp:142

References ELEM_MINGB, first_gb_element, gb(), gbelem_COMPONENT(), gbA::gbelem::lead, minimalize_pairs(), gbA::gbelem::minlevel, R, remove_unneeded_pairs(), s, spair_make(), spair_make_ring(), spair_make_skew(), and x.

Referenced by do_computation().