#ifndef _sat_solver
#define _sat_solver

#include "logic.h" 
#include "gate.h" 

namespace sat_atpg {
class Sat_Solver {
 public:
 Sat_Solver(){};
 virtual ~Sat_Solver(){};
 virtual bool solve()=0;
 virtual bool set_cnf(Cnf &cnf)=0;
 virtual bool has_preprocess()=0;
 virtual bool can_add_clause_later()=0;
 virtual bool preprocess()=0;
 virtual void assign_solution(Cnf &cnf)=0;
 virtual bool add_clause(My_Clause &m_c)=0;  
 virtual bool simplify ()=0; 
 //virtual bool set_cnf(Cnf &cnf,Circuit c,string vct)=0;
 //virtual bool solveA(string assign)=0;
};
}
#endif
