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

◆ make_new_pairs()

void binomialGB::make_new_pairs ( binomial_s_pair_set * Pairs,
binomial_gb_elem * f ) const

Definition at line 796 of file gb-toric.cpp.

798{
799 // Compute (a minimal generating set of)
800 // the ideal quotient in(Gmin) : in(f).
801 // Remove any that satisfy certain criteria:
802 // 1. gcd(lead terms) is 1: remove.
803 // 2. if homog_prime, gcd(tail terms) is not 1: remove.
804 // Any that pass these tests, insert into Pairs.
805
806 monomial m = f->f.lead;
808
809 for (monomial_list *q = I; q != nullptr; q = q->next)
810 {
811 gbmin_elem *ge = q->tag; // a list of possibles
812
813 binomial_gb_elem *g = ge->elem;
814
815 // Criterion 1: gcd of lead terms must be not 1.
816 if (R->gcd_is_one(R->lead_monomial(f->f), R->lead_monomial(g->f)))
817 {
818 // remove each of the elements in 'g'.
819 continue;
820 }
821
822 // Criterion 2: if a homogeneous prime,
823 // gcd of tails must be 1.
825 {
826 if (!R->gcd_is_one(f->f.tail, g->f.tail)) continue;
827 }
828
829 // Finally do the insert
830 monomial lcm = R->mult(m, q->m);
831 Pairs->insert(binomial_s_pair(f, g, lcm));
832 }
834}
void remove_monomial_list(monomial_list *mm) const
Definition gb-toric.cpp:836
bool is_homogeneous_prime
Definition gb-toric.hpp:257
monomial_list * ideal_quotient(monomial0 m) const
Definition gb-toric.cpp:735
const binomial_ring * R
Definition gb-toric.hpp:252
std::set< Pair > Pairs
#define monomial
Definition gb-toric.cpp:11
monomial0 tail
Definition gb-toric.hpp:52
monomial0 lead
Definition gb-toric.hpp:51
binomial_gb_elem * elem
Definition gb-toric.hpp:234

References binomialGB::gbmin_elem::elem, binomial_gb_elem::f, ideal_quotient(), is_homogeneous_prime, binomial::lead, monomial, binomialGB::monomial_list::next, R, remove_monomial_list(), and binomial::tail.