if(total_div_node.getAttribute(LinearIntDivAttr(), total_div_skolem)) {
return total_div_skolem;
}
- total_div_skolem = nm->mkSkolem("DivisionTotalSkolem", nm->integerType(),
- "the result of an intdiv-by-k term");
+ total_div_skolem = nm->mkSkolem("DivisionTotalSkolem", nm->realType(),
+ "the result of a div term");
total_div_node.setAttribute(LinearIntDivAttr(), total_div_skolem);
Node zero = mkRationalNode(0);
Node lemma = den.eqNode(zero).iteNode(
if(div_node.getAttribute(LinearIntDivAttr(), div_skolem)) {
return div_skolem;
}
- div_skolem = nm->mkSkolem("DivisionSkolem", nm->integerType(),
- "the result of an intdiv-by-k term");
+ div_skolem = nm->mkSkolem("DivisionSkolem", nm->realType(),
+ "the result of a div term");
div_node.setAttribute(LinearIntDivAttr(), div_skolem);
Node div0 = nm->mkNode(APPLY_UF, div0Func, num);
Node total_div = getSkolemConstrainedToDivisionTotal(num, den, out);
--- /dev/null
+; COMMAND-LINE: --nl-ext --simplification=none
+; EXPECT: sat
+(set-logic QF_UFNRA)
+(set-info :status unsat)
+(declare-fun x () Real)
+(declare-fun y () Real)
+(declare-fun f (Real) Real)
+
+(assert (= (f x) 0.2))
+(assert (= (f y) 0.4))
+(assert (= (/ (f x) (f y)) 0.5))
+
+(check-sat)