3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 12:08:18 +00:00
z3/src/sat/sat_extension.h
Nikolaj Bjorner 0b711c5ef8 adding drat
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-02-03 15:41:08 -08:00

54 lines
1.3 KiB
C++

/*++
Copyright (c) 2011 Microsoft Corporation
Module Name:
sat_extension.h
Abstract:
An abstract class for SAT extensions.
Author:
Leonardo de Moura (leonardo) 2011-05-21.
Revision History:
--*/
#ifndef SAT_EXTENSION_H_
#define SAT_EXTENSION_H_
#include"sat_types.h"
#include"params.h"
#include"statistics.h"
namespace sat {
enum check_result {
CR_DONE, CR_CONTINUE, CR_GIVEUP
};
class extension {
public:
virtual ~extension() {}
virtual void set_solver(solver* s) = 0;
virtual void propagate(literal l, ext_constraint_idx idx, bool & keep) = 0;
virtual void get_antecedents(literal l, ext_justification_idx idx, literal_vector & r) = 0;
virtual void asserted(literal l) = 0;
virtual check_result check() = 0;
virtual void push() = 0;
virtual void pop(unsigned n) = 0;
virtual void simplify() = 0;
virtual void clauses_modifed() = 0;
virtual lbool get_phase(bool_var v) = 0;
virtual std::ostream& display(std::ostream& out) const = 0;
virtual std::ostream& display_justification(std::ostream& out, ext_justification_idx idx) const = 0;
virtual void collect_statistics(statistics& st) const = 0;
virtual extension* copy(solver* s) = 0;
};
};
#endif