Exemplo n.º 1
0
        /// <summary>
        /// Create a model checker based on decision diagrams.
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        private static IModelChecker CreateModelCheckerDD(Zen <bool> expression)
        {
            var heuristic      = new InterleavingHeuristic();
            var mustInterleave = heuristic.Compute(expression);
            var manager        = new DDManager <BDDNode>(new BDDNodeFactory());
            var solver         = new SolverDD <BDDNode>(manager, mustInterleave);

            solver.Init();
            return(new ModelChecker <Assignment <BDDNode>, Variable <BDDNode>, DD, BitVector <BDDNode>, Unit>(solver));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Create a new instance of a <see cref="StateSet{T}"/>.
 /// </summary>
 /// <param name="solver">The solver.</param>
 /// <param name="stateSet">The state set as a decision diagram.</param>
 /// <param name="arbitraryMapping">The variable cache.</param>
 /// <param name="zenExpression">The Zen expression for variables.</param>
 /// <param name="variableSet">The decision diagram variable set.</param>
 internal StateSet(
     SolverDD <BDDNode> solver,
     DD stateSet,
     Dictionary <object, Variable <BDDNode> > arbitraryMapping,
     Zen <T> zenExpression,
     VariableSet <BDDNode> variableSet)
 {
     this.Solver           = solver;
     this.Set              = stateSet;
     this.ArbitraryMapping = arbitraryMapping;
     this.ZenExpression    = zenExpression;
     this.VariableSet      = variableSet;
 }