diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-07-13 02:12:46 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-13 07:12:46 +0000 |
commit | 956a2b1b8a8ef51cd3794dc3ee4887ccf8778e1e (patch) | |
tree | c4c95a92e1f88f351865ecfea54c754a55b63579 /src/theory/arith/arith_state.h | |
parent | 03087213703b8429ed98a30160df8fea22bc25fb (diff) |
Add branch and bound lemma if linear arithmetic generates a non-integer assignment (#6868)
This double checks that TheoryArithPrivate generates a model that does not assign real values to integer variables.
This is done outside of TheoryArithPrivate intentionally, so that it can be checked independently.
This code should very rarely be applied but would have caught the incorrect model which led to wrong results in the UFNIA division of smtcomp 2021.
Diffstat (limited to 'src/theory/arith/arith_state.h')
-rw-r--r-- | src/theory/arith/arith_state.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/theory/arith/arith_state.h b/src/theory/arith/arith_state.h index 0aa848f46..a54ae6bf0 100644 --- a/src/theory/arith/arith_state.h +++ b/src/theory/arith/arith_state.h @@ -38,17 +38,16 @@ class TheoryArithPrivate; class ArithState : public TheoryState { public: - ArithState(TheoryArithPrivate& parent, - context::Context* c, - context::UserContext* u, - Valuation val); + ArithState(context::Context* c, context::UserContext* u, Valuation val); ~ArithState() {} /** Are we currently in conflict? */ bool isInConflict() const override; + /** Set parent */ + void setParent(TheoryArithPrivate* p); private: /** reference to parent */ - TheoryArithPrivate& d_parent; + TheoryArithPrivate* d_parent; }; } // namespace arith |