}
void TheoryModel::assignFunctionDefinition( Node f, Node f_def ) {
- Assert(d_uf_models.find(f) == d_uf_models.end());
Trace("model-builder") << " Assigning function (" << f << ") to (" << f_def << ")" << endl;
+ Assert(d_uf_models.find(f) == d_uf_models.end());
if( options::ufHo() ){
//we must rewrite the function value since the definition needs to be a constant value
d_uf_models[f] = f_def;
}
- if( options::ufHo() ){
+ if (options::ufHo() && d_equalityEngine->hasTerm(f))
+ {
Trace("model-builder-debug") << " ...function is first-class member of equality engine" << std::endl;
- Assert(d_equalityEngine->hasTerm(f));
// assign to representative if higher-order
Node r = d_equalityEngine->getRepresentative( f );
//always replace the representative, since it is initially assigned to itself
regress1/gensys_brn001.smt2
regress1/ho/fta0328.lfho.p
regress1/ho/issue3136-fconst-bool-bool.smt2
+ regress1/ho/issue4065-no-rep.smt2
regress1/ho/nested_lambdas-AGT034^2.smt2
regress1/ho/nested_lambdas-sat-SYO056^1-delta.smt2
regress1/ho/NUM638^1.smt2
--- /dev/null
+(set-logic AUFBV)
+(set-info :status sat)
+(set-option :bv-div-zero-const false)
+(set-option :fmf-bound-int true)
+(set-option :uf-ho true)
+(declare-fun _substvar_20_ () Bool)
+(declare-sort S4 0)
+(assert (forall ((q15 S4) (q16 (_ BitVec 20)) (q17 (_ BitVec 13))) (xor (= (_ bv0 13) (_ bv0 13) q17 (bvsrem (_ bv0 13) (_ bv0 13)) q17) _substvar_20_ true)))
+(check-sat)
+(exit)