Boolean UNIX_BGPAdminDistance::getAntecedent(CIMProperty &p) const { p = CIMProperty(PROPERTY_ANTECEDENT, getAntecedent()); return true; }
Boolean UNIX_ClassifierFilterSet::getAntecedent(CIMProperty &p) const { p = CIMProperty(PROPERTY_ANTECEDENT, getAntecedent()); return true; }
scalar Rule::activationDegree(const TNorm* conjunction, const SNorm* disjunction) const { if (not isLoaded()) { throw fl::Exception("[rule error] the following rule is not loaded: " + _text, FL_AT); } return _weight * getAntecedent()->activationDegree(conjunction, disjunction); }
Boolean UNIX_AssociatedIndicatorLED::getAntecedent(CIMProperty &p) const { p = CIMProperty(PROPERTY_ANTECEDENT, getAntecedent()); return true; }
Boolean UNIX_BGPPeerGroupService::getAntecedent(CIMProperty &p) const { p = CIMProperty(PROPERTY_ANTECEDENT, getAntecedent()); return true; }
void Solver::recordAllUIPCauses() { // note: // variables of lower dl: if seen we dont work with them anymore // variables of this dl: if seen we incorporate their // antecedent and set to unseen bool seen[num_variables() + 1]; memset(seen, false, sizeof(bool) * (num_variables() + 1)); static vector<LiteralID> tmp_clause; tmp_clause.clear(); assertion_level_ = 0; uip_clauses_.clear(); unsigned lit_stack_ofs = literal_stack_.size(); int DL = stack_.get_decision_level(); unsigned lits_at_current_dl = 0; for (auto l : violated_clause) { if (var(l).decision_level == 0 || existsUnitClauseOf(l.var())) continue; if (var(l).decision_level < DL) tmp_clause.push_back(l); else lits_at_current_dl++; literal(l).increaseActivity(); seen[l.var()] = true; } unsigned n = 0; LiteralID curr_lit; while (lits_at_current_dl) { assert(lit_stack_ofs != 0); curr_lit = literal_stack_[--lit_stack_ofs]; if (!seen[curr_lit.var()]) continue; seen[curr_lit.var()] = false; if (lits_at_current_dl-- == 1) { n++; if (!hasAntecedent(curr_lit)) { // this should be the decision literal when in first branch // or it is a literal decided to explore in failed literal testing //assert(stack_.TOS_decLit() == curr_lit); break; } // perform UIP stuff minimizeAndStoreUIPClause(curr_lit.neg(), tmp_clause, seen); } assert(hasAntecedent(curr_lit)); if (getAntecedent(curr_lit).isAClause()) { updateActivities(getAntecedent(curr_lit).asCl()); assert(curr_lit == *beginOf(getAntecedent(curr_lit).asCl())); for (auto it = beginOf(getAntecedent(curr_lit).asCl()) + 1; *it != SENTINEL_CL; it++) { if (seen[it->var()] || var(*it).decision_level == 0 || existsUnitClauseOf(it->var())) continue; if (var(*it).decision_level < DL) tmp_clause.push_back(*it); else lits_at_current_dl++; seen[it->var()] = true; } } else { LiteralID alit = getAntecedent(curr_lit).asLit(); literal(alit).increaseActivity(); literal(curr_lit).increaseActivity(); if (!seen[alit.var()] && !var(alit).decision_level == 0 && !existsUnitClauseOf(alit.var())) { if (var(alit).decision_level < DL) tmp_clause.push_back(alit); else lits_at_current_dl++; seen[alit.var()] = true; } } } if (!hasAntecedent(curr_lit)) { minimizeAndStoreUIPClause(curr_lit.neg(), tmp_clause, seen); } // if (var(curr_lit).decision_level > assertion_level_) // assertion_level_ = var(curr_lit).decision_level; }
Boolean UNIX_CalculationServiceForDropper::getAntecedent(CIMProperty &p) const { p = CIMProperty(PROPERTY_ANTECEDENT, getAntecedent()); return true; }