This ensures that arrays is not the owner of uninterpreted sorts if uf-ho or finite-model-find are enabled. In these cases, the UF solver implements special techniques (cardinality, ho reasoning) that should take priority.
Fixes #5233.
}
// If in arrays, set the UF handler to arrays
- if (logic.isTheoryEnabled(THEORY_ARRAYS)
+ if (logic.isTheoryEnabled(THEORY_ARRAYS) && !options::ufHo()
+ && !options::finiteModelFind()
&& (!logic.isQuantified()
|| (logic.isQuantified() && !logic.isTheoryEnabled(THEORY_UF))))
{
regress0/ho/hoa0008.smt2
regress0/ho/issue4477.smt2
regress0/ho/issue4990-care-graph.smt2
+ regress0/ho/issue5233-part1-usort-owner.smt2
regress0/ho/ite-apply-eq.smt2
regress0/ho/lambda-equality-non-canon.smt2
regress0/ho/match-middle.smt2
--- /dev/null
+; COMMAND-LINE: --uf-ho
+; EXPECT: sat
+(set-logic QF_AUFBVLIA)
+(set-option :uf-ho true)
+(declare-fun a (Int) Int)
+(declare-fun b (Int) Int)
+(assert (distinct a b))
+(check-sat)