public IReadOnlyCollection <Transition> AnalyzeTransitions(State source, Action action, IEnumerable <State> targets) { ISolver corralRunner = new CorralRunner(defaultArgs, workingDir); var transitionQueries = queryGenerator.CreateTransitionQueries(source, action, targets); var queryAssembly = CreateBoogieQueryAssembly(transitionQueries); var evaluator = new QueryEvaluator(corralRunner, queryAssembly); var feasibleTransitions = evaluator.GetFeasibleTransitions(transitionQueries); unprovenQueriesCount += evaluator.UnprovenQueries; return(feasibleTransitions); }
protected ISet <Action> GetMustBeDisabledActions(State source, Action action, IEnumerable <Action> actions, ISolver corralRunner) { Contract.Requires(source != null); Contract.Requires(action != null); Contract.Requires(actions.Any()); Contract.Requires(corralRunner != null); var targetNegatedPreconditionQueries = queryGenerator.CreateNegativeQueries(source, action, actions); generatedQueriesCount += targetNegatedPreconditionQueries.Count; var queryAssembly = CreateBoogieQueryAssembly(targetNegatedPreconditionQueries); var evaluator = new QueryEvaluator(corralRunner, queryAssembly); var disabledActions = new HashSet <Action>(evaluator.GetDisabledActions(targetNegatedPreconditionQueries)); unprovenQueriesCount += evaluator.UnprovenQueries; return(disabledActions); }