summaryrefslogtreecommitdiff
path: root/src/theory/bv/bv_inequality_graph.h
diff options
context:
space:
mode:
authorlianah <lianahady@gmail.com>2013-03-18 19:10:47 -0400
committerlianah <lianahady@gmail.com>2013-03-18 19:10:47 -0400
commitb7054f0e092f54c9e385f4b55a81173602b74b42 (patch)
tree3d0d81d72f768773d055ed9667a72c2067ea297c /src/theory/bv/bv_inequality_graph.h
parent25ac2c8f4b45e2b299895e97a30790fbf46cf79f (diff)
more work on inequality reasoning for bv
Diffstat (limited to 'src/theory/bv/bv_inequality_graph.h')
-rw-r--r--src/theory/bv/bv_inequality_graph.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/theory/bv/bv_inequality_graph.h b/src/theory/bv/bv_inequality_graph.h
index 2ac22bb5b..c319ba5f4 100644
--- a/src/theory/bv/bv_inequality_graph.h
+++ b/src/theory/bv/bv_inequality_graph.h
@@ -35,6 +35,24 @@ typedef unsigned ReasonId;
class InequalityGraph {
context::Context d_context;
+
+ struct InequalityEdge {
+ TermId next;
+ ReasonId reason;
+ InequalityEdge(TermId n, ReasonId r)
+ : next(n)
+ reason(r)
+ {}
+ };
+
+ class InequalityNode {
+ TermId d_id;
+ unsigned d_bitwidth;
+ bool d_isConstant;
+ BitVector d_value;
+ };
+ std::vector<InequalityNode> d_nodes;
+ std::vector< std::vector<InequalityEdge> > d_nodeEdges;
public:
@@ -44,7 +62,9 @@ public:
bool addInequality(TermId a, TermId b, ReasonId reason);
bool propagate();
bool areLessThan(TermId a, TermId b);
- void getConflict(std::vector<ReasonId>& conflict);
+ void getConflict(std::vector<ReasonId>& conflict);
+ TermId addTerm(unsigned bitwidth);
+ TermId addTerm(const BitVector& value);
};
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback