bool IncludeTransition(IState startState, CompoundTerm action, IState endState, Map <string, Bag <Term> > props) { //check first that the endstate satisfies the filters if (!modelProgram.SatisfiesStateFilter(endState)) { return(false); } //check then that the additional predicate holds if (transitionPredicate == null) { return(true); } else { return(transitionPredicate(startState, action, endState, props)); } }