402{
403 bool changesHappened = true;
404 IntermediateBasis::iterator
end = F.end();
405 unsigned long numChanged = 0;
406 while (changesHappened)
407 {
408 changesHappened = false;
409 for (IntermediateBasis::iterator it = F.begin(); it !=
end;)
410 {
411 if (
reduce(it->second, F, it))
412 {
413
414 numChanged++;
415 if (it->second.isZero())
416 {
417 F.erase(it++);
418 }
419 else
420 {
421 ++it;
422 }
423 changesHappened = true;
424 }
425 else
426 {
427 ++it;
428 }
429 }
430 }
431}
bool reduce(BRP &f, const IntermediateBasis &F, const IntermediateBasis::const_iterator itF)
TermIterator< Nterm > end(Nterm *)