// this is essentially a traits structure
class Type_attr {
public:
-
+
// could use typeid but then different on different machines/compiles
enum { hash_value = 11 };
-
+
typedef Type value_type;//Node?
static const Type_attr marker;
};
* Base class for T-solvers. Abstract DPLL(T).
*/
class Theory {
+ /**
+ * Return whether a node is shared or not. Used by setup().
+ */
+ bool isShared(Node);
+
public:
/**
* Subclasses of Theory may add additional efforts. DO NOT CHECK
static bool fullEffort(Effort e) { return e >= FULL_EFFORT; }
/**
- * Prepare for an Node.
+ * Prepare for a Node.
*/
virtual void setup(Node) = 0;
virtual void propagate(Effort level = FULL_EFFORT) = 0;
/**
- * Return an explanation for the literal (which was previously propagated by this theory)..
+ * Return an explanation for the literal (which was previously
+ * propagated by this theory)..
*/
virtual Node explain(Literal) = 0;