diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2020-03-12 01:55:18 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-11 23:55:18 -0700 |
commit | 08431f8a51a62d02e3d3911db2e7754862953320 (patch) | |
tree | a4abd012c53218634d13473da77caf79c1b55239 /test | |
parent | 404affc37ba4961220e6ab02ee6175844151f6a9 (diff) |
Fix double notify in equality engine (#4036)
Fixes #3955.
Previously we were getting two calls to notifyNewEqClass from the equality engine for new application nodes, since the notification was being done in an internal call to newNode(...). The proper place to call this is in addTermInternal(...) which is called only once per Node per SAT context.
This bug potentially impacted some performance (due to redundant calls), and also broke the contract that notifyNewEqClass should only be called once per node per SAT context. In most cases, this was being handled in a benign way by theory solvers, although an assertion was failing in EqualityQuery, which is fixed by this PR.
A block of code changed indentation in this commit.
Diffstat (limited to 'test')
-rw-r--r-- | test/regress/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/regress/regress1/nl/issue3955-ee-double-notify.smt2 | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/test/regress/CMakeLists.txt b/test/regress/CMakeLists.txt index e3c14126a..0416d4f01 100644 --- a/test/regress/CMakeLists.txt +++ b/test/regress/CMakeLists.txt @@ -1339,6 +1339,7 @@ set(regress_1_tests regress1/nl/issue3647.smt2 regress1/nl/issue3656.smt2 regress1/nl/issue3803-nl-check-model.smt2 + regress1/nl/issue3955-ee-double-notify.smt2 regress1/nl/metitarski-1025.smt2 regress1/nl/metitarski-3-4.smt2 regress1/nl/metitarski_3_4_2e.smt2 diff --git a/test/regress/regress1/nl/issue3955-ee-double-notify.smt2 b/test/regress/regress1/nl/issue3955-ee-double-notify.smt2 new file mode 100644 index 000000000..8aa8793df --- /dev/null +++ b/test/regress/regress1/nl/issue3955-ee-double-notify.smt2 @@ -0,0 +1,7 @@ +(set-logic QF_UFNRA)
+(set-option :snorm-infer-eq true)
+(set-info :status sat)
+(declare-const r0 Real)
+(declare-const r4 Real)
+(assert (<= r4 (- (/ r0 r0))))
+(check-sat)
|