summaryrefslogtreecommitdiff
path: root/src/theory
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-02-28 22:30:40 -0600
committerGitHub <noreply@github.com>2020-02-28 20:30:40 -0800
commit4ac14c09322f234ba2a201e0d281664338fd9ee0 (patch)
tree842c67e61698fac5a82125c65ad77b049bc9349f /src/theory
parent940a25255469bbeea95df14ef25036e6c0565c3e (diff)
Fix assertion related to assignability in the model. (#3843)
Fixes #3813. It appears that an assertion was hardcoded to check whether a term was a variable or APPLY_UF application whereas this check should use isAssignable. This avoids an assertion failure on the given benchmark.
Diffstat (limited to 'src/theory')
-rw-r--r--src/theory/theory_model_builder.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/theory/theory_model_builder.cpp b/src/theory/theory_model_builder.cpp
index e15211847..a96f29ada 100644
--- a/src/theory/theory_model_builder.cpp
+++ b/src/theory/theory_model_builder.cpp
@@ -788,13 +788,12 @@ bool TheoryEngineModelBuilder::buildModel(Model* m)
{
Assert(!evaluable || assignOne);
// this assertion ensures that if we are assigning to a term of
- // Boolean type, then the term is either a variable or an APPLY_UF.
+ // Boolean type, then the term must be assignable.
// Note we only assign to terms of Boolean type if the term occurs in
// a singleton equivalence class; otherwise the term would have been
// in the equivalence class of true or false and would not need
// assigning.
- Assert(!t.isBoolean() || (*i2).isVar()
- || (*i2).getKind() == kind::APPLY_UF);
+ Assert(!t.isBoolean() || isAssignable(*i2));
Node n;
if (itAssigner != eqcToAssigner.end())
{
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback