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

◆ ConstructInvolutiveBasis()

template<typename MonomType>
void BIBasis::BooleanInvolutiveBasis< MonomType >::ConstructInvolutiveBasis ( )
private

Definition at line 426 of file involutive.hpp.

427 {
431
432 while (!ProlongationsSet.Empty())
433 {
436 /* As far as currentTriple can't be 0 (checked in QSET and TSET),
437 * NormalForm can't return 0.
438 */
439
442 if (!newNormalForm->IsZero() && newNormalForm->Lm() == currentTriple->GetPolynomLm())
443 {
444 currentNmpSet = currentTriple->GetNmp();
445 currentAncestor = currentTriple->GetAncestor();
447 {
448 currentAncestor = 0;
449 }
450 }
451 delete currentTriple;
452
453 if (!newNormalForm->IsZero())
454 {
456 tit = IntermediateBasis.Begin();
457
458 while (tit != IntermediateBasis.End())
459 {
460 if ((**tit).GetPolynomLm().IsTrueDivisibleBy(newNormalForm->Lm()))
461 {
462 ProlongationsSet.DeleteDescendants(*tit);
463 newProlongations.push_back(*tit);
464 tit = IntermediateBasis.Erase(tit);
465 }
466 else
467 {
468 ++tit;
469 }
470 }
471
473 if (!newNormalForm->Degree())
474 {
475 return;
476 }
477
478 IntermediateBasis.CollectNonMultiProlongations(--IntermediateBasis.End(), newProlongations);
480 }
481 else
482 {
483 delete newNormalForm;
484 }
485 }
486 }
TSet< MonomType > IntermediateBasis
Polynom< MonomType > * NormalForm(const Triple< MonomType > *triple) const
QSet< MonomType > ProlongationsSet

References BIBasis::Polynom< MonomType >::Degree(), BIBasis::Triple< MonomType >::GetAncestor(), BIBasis::Triple< MonomType >::GetNmp(), BIBasis::Triple< MonomType >::GetPolynomLm(), IntermediateBasis, BIBasis::Polynom< MonomType >::IsZero(), BIBasis::Polynom< MonomType >::Lm(), NormalForm(), and ProlongationsSet.

Referenced by Construct().