diff options
author | lianah <lianahady@gmail.com> | 2013-03-18 19:10:47 -0400 |
---|---|---|
committer | lianah <lianahady@gmail.com> | 2013-03-18 19:10:47 -0400 |
commit | b7054f0e092f54c9e385f4b55a81173602b74b42 (patch) | |
tree | 3d0d81d72f768773d055ed9667a72c2067ea297c /src/theory/bv/bv_inequality_graph.h | |
parent | 25ac2c8f4b45e2b299895e97a30790fbf46cf79f (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.h | 22 |
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); }; } |