d_context->push();
d_definedFunctions = new(true) DefinedFunctionMap(d_userContext);
- if( options::fmfFunWellDefined() || options::fmfFunWellDefinedRelevant() ){
- d_fmfRecFunctionsDefined = new(true) NodeList(d_userContext);
- }
+ d_fmfRecFunctionsDefined = new(true) NodeList(d_userContext);
d_modelCommands = new(true) smt::CommandList(d_userContext);
}
}
d_definedFunctions->deleteSelf();
-
- if( d_fmfRecFunctionsDefined != NULL ){
- d_fmfRecFunctionsDefined->deleteSelf();
- }
+ d_fmfRecFunctionsDefined->deleteSelf();
delete d_theoryEngine;
d_theoryEngine = NULL;
//fmf-fun : assume admissible functions, applying preprocessing reduction to FMF
if( options::fmfFunWellDefined() ){
quantifiers::FunDefFmf fdf;
+ Assert( d_smt.d_fmfRecFunctionsDefined!=NULL );
//must carry over current definitions (for incremental)
for( context::CDList<Node>::const_iterator fit = d_smt.d_fmfRecFunctionsDefined->begin();
fit != d_smt.d_fmfRecFunctionsDefined->end(); ++fit ) {
--- /dev/null
+% EXPECT: invalid
+OPTION "finite-model-find";
+OPTION "fmf-fun";
+
+DATATYPE
+ Node = A | B
+END;
+
+link, reach: (Node,Node,INT) -> BOOLEAN;
+
+ASSERT FORALL(x,y:Node, c:INT):
+ link(x,y,c) => reach(x,y,c);
+
+ASSERT link(A,B,1);
+
+QUERY reach(A,B,5);