void contractor_generic_forall::handle(contractor_status & cs, Enode * body, bool const p) { if (body->isOr()) { vector<Enode *> vec = elist_to_vector(body->getCdr()); handle_disjunction(cs, vec, p); return; } else if (body->isAnd()) { vector<Enode *> vec = elist_to_vector(body->getCdr()); handle_conjunction(cs, vec, p); return; } else if (body->isNot()) { handle(cs, body->get1st(), !p); return; } else { handle_atomic(cs, body, p); return; } }
void contractor_generic_forall::handle(box & b, Enode * body, bool const p, SMTConfig & config) { if (body->isOr()) { vector<Enode *> vec = elist_to_vector(body->getCdr()); handle_disjunction(b, vec, p, config); return; } else if (body->isAnd()) { vector<Enode *> vec = elist_to_vector(body->getCdr()); handle_conjunction(b, vec, p, config); return; } else if (body->isNot()) { handle(b, body->get1st(), !p, config); return; } else { handle_atomic(b, body, p, config); return; } }
void contractor_generic_forall::handle_atomic(contractor_status & cs, Enode * body, bool const p) { vector<Enode*> vec; vec.push_back(body); handle_disjunction(cs, vec, p); return; }
void contractor_generic_forall::handle_atomic(box & b, Enode * body, bool const p, SMTConfig & config) { vector<Enode*> vec; vec.push_back(body); handle_disjunction(b, vec, p, config); return; }