{
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())
{
regress0/arrays/incorrect8.minimized.smtv1.smt2
regress0/arrays/incorrect8.smtv1.smt2
regress0/arrays/incorrect9.smtv1.smt2
+ regress0/arrays/issue3813-massign-assert.smt2
regress0/arrays/swap_t1_np_nf_ai_00005_007.cvc.smtv1.smt2
regress0/arrays/x2.smtv1.smt2
regress0/arrays/x3.smtv1.smt2
--- /dev/null
+; EXPECT: sat
+; COMMAND-LINE: --check-unsat-cores
+(set-logic ALL)
+(set-info :status sat)
+(declare-fun a () (Array Int Bool))
+(declare-fun b () (Array Int Bool))
+(assert (= a (store b 0 true)))
+(check-sat)