Trace("fmc-warn") << "WARNING : no representative for " << n << std::endl;
}
}
+/*
Node r = getRepresentative(n);
if( d_model_basis_rep.find(tn)!=d_model_basis_rep.end() ){
if (r==d_model_basis_rep[tn]) {
}
}
return r;
+*/
+ return getRepresentative(n);
}
}
Node ri = fm->getUsedRepresentative( c[i]);
if( !ri.getType().isSort() && !ri.isConst() ){
Trace("fmc-warn") << "Warning : model has non-constant argument in model " << ri << std::endl;
+ Assert( false );
}
children.push_back(ri);
if( options::mbqiMode()!=quantifiers::MBQI_FMC_INTERVAL || !ri.getType().isInteger() ){
Node nv = fm->getUsedRepresentative( v );
if( !nv.getType().isSort() && !nv.isConst() ){
Trace("fmc-warn") << "Warning : model has non-constant value in model " << nv << std::endl;
+ Assert( false );
}
Node en = (useSimpleModels() && hasNonStar) ? n : NodeManager::currentNM()->mkNode( APPLY_UF, entry_children );
if( std::find(conds.begin(), conds.end(), n )==conds.end() ){
fd-false.smt2 \
tail_rec.smt2 \
jasmin-cdt-crash.smt2 \
- loopy_coda.smt2
+ loopy_coda.smt2 \
+ fmc_unsound_model.smt2
EXTRA_DIST = $(TESTS)
--- /dev/null
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+; this problem produced a model where incorrectly card(a)=1 due to --mbqi=fmc
+(set-logic ALL_SUPPORTED)
+
+(declare-sort a 0)
+(declare-datatypes () ((tree (Leaf (lab a)))))
+
+(declare-sort alpha 0)
+(declare-fun alphabet (tree a) Bool)
+(declare-fun g1 (alpha) tree)
+(declare-fun g2 (alpha) a)
+
+(assert
+ (forall ((x alpha))
+ (=>
+ (= (lab (g1 x)) (g2 x))
+ (alphabet (g1 x) (g2 x)))))
+
+(declare-fun x () a)
+(declare-fun y () a)
+; (assert (= x y))
+(assert
+ (and
+ (exists ((b alpha)) (and (= (Leaf y) (g1 b)) (= x (g2 b))))
+ (not (alphabet (Leaf y) x))))
+(check-sat)