Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }