9 #ifdef INVSYN_INTERFACE
14 #include <unordered_map>
20 class InvariantInCnf {
24 typedef std::tuple<bool, std::string, unsigned> literal;
26 typedef std::vector<literal> clause;
28 typedef std::unordered_map<std::string, clause> cnf_t;
32 static std::string Lit2Str(
const literal& l);
34 static void CanonicalizeClause(clause& c);
36 static std::string Clause2Str(
const clause& c);
38 static void VarsToClause(
const std::set<std::string>& vars, clause& out);
42 void ExportInCnfFormat(std::ostream& os)
const;
44 void ExportInCociFormat(std::ostream& os)
const;
46 void ImportFromFile(std::istream& os);
51 void InsertClause(clause& c);
54 void InsertClauseNoReorder(
const clause& c);
58 void InsertClauseNewerFromReference(clause& c,
const InvariantInCnf& ref);
62 void InsertClauseIncremental(
const InvariantInCnf& ref);
65 const cnf_t& GetCnfs()
const {
return _cnf_; }
78 #endif // INVSYN_INTERFACE