1#ifndef _cadical_hpp_INCLUDED
2#define _cadical_hpp_INCLUDED
218class FixedAssignmentListener;
221class WitnessIterator;
222class ExternalPropagator;
224struct InternalTracer;
263 void clause (
int,
int,
int);
264 void clause (
int,
int,
int,
int);
265 void clause (
int,
int,
int,
int,
int);
266 void clause (
const std::vector<int> &);
267 void clause (
const int *,
size_t);
503 void implied (std::vector<int> &implicants);
519 std::vector<std::vector<int>>
cubes;
588 void reserve (
int min_max_var);
602#ifndef CADICAL_NTRACING
621 void trace_api_calls (FILE *
file);
648 void prefix (
const char *verbose_message_prefix);
714 bool limit (
const char *arg,
int val);
802 void phase (
int lit);
860 bool finalize_clauses =
false);
862 bool finalize_clauses =
false);
864 bool finalize_clauses =
false);
866 bool finalize_clauses =
false);
898 static void usage ();
955 int strict,
bool &incremental,
956 std::vector<int> &cubes);
959 bool &incremental, std::vector<int> &cubes);
974 const char *
write_dimacs (
const char *path,
int min_max_var = 0);
991 bool adding_constraint;
1036#ifndef CADICAL_NTRACING
1047 bool close_trace_api_file;
1048 FILE *trace_api_file;
1050 static bool tracing_api_through_environment;
1054 void trace_api_call (
const char *)
const;
1055 void trace_api_call (
const char *,
int)
const;
1056 void trace_api_call (
const char *,
const char *)
const;
1057 void trace_api_call (
const char *,
const char *,
int)
const;
1060 void transition_to_steady_state ();
1077 const char *read_solution (
const char *path);
1084#ifndef PRINTF_FORMAT
1086#define __USE_MINGW_ANSI_STDIO 1
1087#define PRINTF_FORMAT __MINGW_PRINTF_FORMAT
1089#define PRINTF_FORMAT printf
1105#define CADICAL_ATTRIBUTE_FORMAT(FORMAT_POSITION, VARIADIC_ARGUMENT_POSITION)
1112 void section (
const char *);
1113 void message (
const char *, ...)
1117 void error (
const char *, ...)
1125 void verbose (
int level,
const char *, ...)
1138 int call_external_solve_and_check_results (
bool preprocess_only);
1158 bool observed (
int lit);
1159 bool is_witness (
int lit);
1255 (void) propagated_lit;
1317 virtual bool clause (
const std::vector<int> &) = 0;
1341 const std::vector<int> &
witness,
1342 int64_t
id = 0) = 0;
#define ABC_NAMESPACE_CXX_HEADER_START
#define ABC_NAMESPACE_CXX_HEADER_END
#define CADICAL_ATTRIBUTE_FORMAT(FORMAT_POSITION, VARIADIC_ARGUMENT_POSITION)
virtual bool clause(const std::vector< int > &)=0
virtual ~ClauseIterator()
virtual void notify_backtrack(size_t new_level)=0
virtual int cb_propagate()
virtual bool cb_has_external_clause(bool &is_forgettable)=0
bool are_reasons_forgettable
virtual int cb_add_reason_clause_lit(int propagated_lit)
virtual void notify_new_decision_level()=0
virtual ~ExternalPropagator()
virtual int cb_add_external_clause_lit()=0
virtual bool cb_check_found_model(const std::vector< int > &model)=0
virtual void notify_assignment(const std::vector< int > &lits)=0
virtual ~FixedAssignmentListener()
virtual void notify_fixed_assignment(int)=0
virtual void learn(int lit)=0
virtual bool learning(int size)=0
void connect_learner(Learner *learner)
const char * write_dimacs(const char *path, int min_max_var=0)
void reset_observed_vars()
bool set_long_option(const char *arg)
void add_observed_var(int var)
const char * read_dimacs(const char *path, int &vars, int strict, bool &incremental, std::vector< int > &cubes)
bool is_decision(int lit)
void connect_external_propagator(ExternalPropagator *propagator)
void implied(std::vector< int > &implicants)
void force_backtrack(size_t new_level)
CubesWithStatus generate_cubes(int, int min_depth=0)
bool is_valid_limit(const char *arg)
const State & state() const
static bool is_valid_option(const char *name)
void flush_proof_trace(bool print=false)
bool limit(const char *arg, int val)
void connect_proof_tracer(Tracer *tracer, bool antecedents, bool finalize_clauses=false)
int64_t redundant() const
void remove_observed_var(int var)
bool disconnect_proof_tracer(Tracer *tracer)
int64_t irredundant() const
void prefix(const char *verbose_message_prefix)
static bool is_preprocessing_option(const char *name)
void close_proof_trace(bool print=false)
void connect_fixed_listener(FixedAssignmentListener *fixed_listener)
const char * write_extension(const char *path)
const char * read_dimacs(FILE *file, const char *name, int &vars, int strict, bool &incremental, std::vector< int > &cubes)
void disconnect_external_propagator()
static void build(FILE *file, const char *prefix="c ")
int get(const char *name)
void disconnect_terminator()
friend class MockPropagator
bool configure(const char *)
int reserve_difference(int number_of_vars)
static const char * signature()
static bool is_valid_long_option(const char *arg)
bool set(const char *name, int val)
void reserve(int min_max_var)
static void configurations()
bool trace_proof(FILE *file, const char *name)
static const char * version()
bool frozen(int lit) const
void connect_terminator(Terminator *terminator)
void disconnect_learner()
friend struct ObserveCall
bool traverse_witnesses_backward(WitnessIterator &) const
void copy(Solver &other) const
static bool is_valid_configuration(const char *)
friend struct DisconnectCall
bool traverse_clauses(ClauseIterator &) const
bool traverse_witnesses_forward(WitnessIterator &) const
void disconnect_fixed_listener()
const char * read_dimacs(FILE *file, const char *name, int &vars, int strict=1)
virtual bool terminate()=0
virtual bool witness(const std::vector< int > &clause, const std::vector< int > &witness, int64_t id=0)=0
virtual ~WitnessIterator()
struct clause_t clause
STRUCTURE DEFINITIONS ///.
std::vector< std::vector< int > > cubes