Beispiel #1
0
void SAT::cEnqueue(Lit p, Reason r) {
	assert(value(p) != l_True);
	int v = var(p);
	if (value(p) == l_False) {
		if (so.lazy) {
			if (r == NULL) {
				assert(decisionLevel() == 0);
				setConfl();
			} else {
				confl = getConfl(r, p);
				(*confl)[0] = p;
			}
		} else setConfl();
		return;
	}
	assigns [v] = toInt(lbool(!sign(p)));
	trailpos[v] = engine.trailPos();
	reason  [v] = r;
	trail.last().push(p);
}
Beispiel #2
0
void SAT::cEnqueue(Lit p, Reason r) {
  /* if (so.debug) { */
  /*   std::cerr << "c-enqueue literal " << getLitString(toInt(p)) << " because " << showReason(r) << "\n"; */
  /* } */
	assert(value(p) != l_True);
	int v = var(p);
	if (value(p) == l_False) {
		if (so.lazy) {
			if (r == NULL) {
				assert(decisionLevel() == 0);
				setConfl();
			} else {
				confl = getConfl(r, p);
				(*confl)[0] = p;
			}
		} else setConfl();
		return;
	}
	assigns [v] = toInt(lbool(!sign(p)));
	trailpos[v] = engine.trailPos();
	reason  [v] = r;
	trail.last().push(p);
}