コード例 #1
0
ファイル: minisolver.cpp プロジェクト: myreg/cobra
void MiniSolver::AddClause(std::initializer_list<VarId> list) {
  Minisat::vec<Minisat::Lit> v;
  for (int i = 0; i < contexts_.size(); i++)
    v.push(~contexts_[i]);
  for (auto var : list)
    v.push(Minisat::mkLit(abs(var) - 1, var > 0));
  minisat_.addClause(v);
}
コード例 #2
0
ファイル: minisat.cpp プロジェクト: Dunedune/CVC4
void MinisatSatSolver::toMinisatClause(SatClause& clause,
                                           Minisat::vec<Minisat::Lit>& minisat_clause) {
  for (unsigned i = 0; i < clause.size(); ++i) {
    minisat_clause.push(toMinisatLit(clause[i]));
  }
  Assert(clause.size() == (unsigned)minisat_clause.size());
}
コード例 #3
0
ファイル: satcheck_minisat2.cpp プロジェクト: sarnold/cbmc
void convert(const bvt &bv, Minisat::vec<Minisat::Lit> &dest)
{
  dest.capacity(bv.size());

  forall_literals(it, bv)
    if(!it->is_false())
      dest.push(Minisat::mkLit(it->var_no(), it->sign()));
}
コード例 #4
0
ファイル: CryptoMinisat.cpp プロジェクト: 0bliv10n/s2e
  bool
  CryptoMinisat::addClause(const vec_literals& ps) // Add a clause to the solver.
  {
    // Cryptominisat uses a slightly different vec class.
    // Cryptominisat uses a slightly different Lit class too.

    // VERY SLOW>
    MINISAT::vec<MINISAT::Lit>  v;
    for (int i =0; i<ps.size();i++)
      v.push(MINISAT::Lit(var(ps[i]), sign(ps[i])));

    return s->addClause(v);
  }