bool SigPolyBasis::isSingularTopReducibleSlow( const Poly& poly, ConstMonoRef sig ) const { if (poly.isZero()) return false; monomial multiplier = ring().allocMonomial(); const size_t genCount = size(); const auto polyLead = poly.leadMono(); for (size_t i = 0; i < genCount; ++i) { if (!monoid().divides(leadMono(i), polyLead)) continue; monoid().divide(leadMono(i), polyLead, multiplier); if (monoid().compare(sig, multiplier, signature(i)) == EQ) return true; } ring().freeMonomial(multiplier); return false; }
/// Returns true if the lead monomial of poly is not divisible by the /// lead monomial of any basis element. Equality counts as divisibility. bool leadMinimal(const Poly& poly) const { MATHICGB_ASSERT(&poly != 0); return mMonoLookup->divisor(poly.leadMono()) != static_cast<size_t>(-1); }