//returns 1 if all the clauses mentioning the variable are subsumed, 0 otherwise BOOLEAN sat_irrelevant_var(const Var* var) { for (c2dSize i = 0; i < sat_var_occurences(var); i++) { if (!sat_subsumed_clause(var->clauses[i])) return 0; } return 1; }
//returns 1 if all the clauses mentioning the variable are subsumed, 0 otherwise BOOLEAN sat_irrelevant_var(const Var* var) { c2dSize occurences = sat_var_occurences(var); for (c2dSize i = 0; i < occurences; i++) { Clause* clause = sat_clause_of_var(i, var); if (!sat_subsumed_clause(clause)) return 0; } return 1; }
void sat_restore_literal(SatState* sat_state, Lit* lit) { lit->implied = 0; Var* var = sat_literal_var(lit); for (c2dSize i = 0; i < sat_var_occurences(var); i++) { Clause* clause = sat_clause_of_var(i, var); if (sat_subsumed_clause(clause)) { clause->subsumed = sat_check_subsumed_clause(clause); if (!sat_subsumed_clause(clause)) vector_push(&sat_state->q, clause); } } for (c2dSize i = 0; i < vector_size(&var->mentions_lc); i++) { Clause* clause = vector_get(&var->mentions_lc, i); if (sat_subsumed_clause(clause)) { clause->subsumed = sat_check_subsumed_clause(clause); if (!sat_subsumed_clause(clause)) vector_push(&sat_state->q, clause); } } }