summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-06-02 14:18:24 -0500
committerAndres Noetzli <andres.noetzli@gmail.com>2018-06-02 12:18:24 -0700
commit6de92e6a6ac4dd81ff7f65bf33bddfabfc3e2c48 (patch)
tree23f1535eac4ba83edf241ca2afb567e1c70420a6
parenta9dccb878cef1bab897e182a6c0365e333191dd5 (diff)
Fix assertion involving unassigned Boolean eqc in model (#2050)
-rw-r--r--src/theory/theory_model_builder.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/theory/theory_model_builder.cpp b/src/theory/theory_model_builder.cpp
index f91a413e3..5024d17ac 100644
--- a/src/theory/theory_model_builder.cpp
+++ b/src/theory/theory_model_builder.cpp
@@ -666,7 +666,14 @@ bool TheoryEngineModelBuilder::buildModel(Model* m)
if (assignable)
{
Assert(!evaluable || assignOne);
- Assert(!t.isBoolean() || (*i2).getKind() == kind::APPLY_UF);
+ // 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.
+ // 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);
Node n;
if (t.getCardinality().isInfinite())
{
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback