Node l, u;
getBoundValues( q, v, rsi, l, u );
if( l.isNull() || u.isNull() ){
+ Trace("bound-int-warn") << "WARNING: Could not find integer bounds in model for " << v << " in " << q << std::endl;
//failed, abort the iterator
return false;
}else{
}else if( bvt==BOUND_SET_MEMBER ){
Node srv = getSetRangeValue( q, v, rsi );
if( srv.isNull() ){
+ Trace("bound-int-warn") << "WARNING: Could not find set bound in model for " << v << " in " << q << std::endl;
return false;
}else{
Trace("bound-int-rsi") << "Bounded by set membership : " << srv << std::endl;
}
}
+//AJR : FIXME : this function is only used by bounded integers, can likely be removed.
Node FirstOrderModel::getCurrentModelValue( Node n, bool partial ) {
std::vector< Node > children;
if( n.getNumChildren()>0 ){
return nn;
}
}else{
- return getRepresentative(n);
+ //return getRepresentative(n);
+ return getValue(n);
}
}
cons-sets-bounds.smt2 \
bug651.smt2 \
bug652.smt2 \
- bug782.smt2
+ bug782.smt2 \
+ quant_real_univ.cvc
EXTRA_DIST = $(TESTS)
--- /dev/null
+% EXPECT: sat\r
+OPTION "fmf-bound";\r
+Atom : TYPE;\r
+REAL_UNIVERSE : SET OF [REAL];\r
+ATOM_UNIVERSE : SET OF [Atom];\r
+ASSERT REAL_UNIVERSE = UNIVERSE :: SET OF [REAL];\r
+ASSERT ATOM_UNIVERSE = UNIVERSE :: SET OF [Atom];\r
+\r
+levelVal : SET OF [Atom, REAL];\r
+ASSERT FORALL (s : Atom, v1, v2 : REAL) : \r
+ (TUPLE(s) IS_IN ATOM_UNIVERSE AND TUPLE(v1) IS_IN REAL_UNIVERSE AND TUPLE(v2) IS_IN REAL_UNIVERSE) \r
+ => (((s, v1) IS_IN levelVal AND (s, v2) IS_IN levelVal) => (v1 = v2));\r
+\r
+CHECKSAT; \r