Definition at line 578 of file monideal.cpp.
579{
580 if (
mi ==
nullptr)
return true;
581
584 {
585
586 if (
p->left ==
nullptr)
throw exc::engine_error(
"left node link is null");
587 if (
p->right ==
nullptr)
throw exc::engine_error(
"right node link is null");
588 if (
p->header ==
nullptr)
throw exc::engine_error(
"header node link is null");
589 if (
p->tag ==
Nmi_node::node and
p !=
mi and
p->val.down ==
nullptr)
throw exc::engine_error(
"down node link is null");
590
591
592
593
594
598 {
599
600
601 for (Nmi_node* q =
p->right; q !=
p; q = q->right)
602 {
603 if (
p->var != q->var)
throw exc::engine_error(
"variable index is not consistent");
604 if (q->left->right != q) throw exc::engine_error("the double link list is inconsistent");
605 if (q->left !=
p and q->left->exp >= q->exp)
throw exc::engine_error(
"exponents are not increasing going to the right");
606 }
607
608
612 }
614 {
616 }
617 }
618
619 return true;
620}
References Nmi_node::leaf, mi, Nmi_node::node, and p.