Example #1
0
//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;
}
Example #2
0
//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;
}
Example #3
0
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);
		}
	}
}