public override void Initialize(SpecificationBase spec)
        {
            //initialize the ModelCheckingOptions
            base.Initialize(spec);

            Specification Spec = spec as Specification;

            ReachableStateCondition = Spec.DeclarationDatabase[ReachableStateLabel];

            List <string> varList = Process.GetGlobalVariables();

            varList.AddRange(ReachableStateCondition.GetVars());
            varList.AddRange(ConstraintCondition.GetVars());

            Valuation GlobalEnv = Spec.SpecValuation.GetVariableChannelClone(varList, Process.GetChannels());

            //Initialize InitialStep
            InitialStep = new Configuration(Process, Constants.INITIAL_EVENT, null, GlobalEnv, false);

            MustAbstract = Process.MustBeAbstracted();

            if (MustAbstract)
            {
                throw new ParsingException(
                          "Process " + StartingProcess +
                          " has infinite states and therefore can not be used to assert reachability with MIN/MAX constraints!",
                          AssertToken);
            }
        }
        public override void Initialize(SpecificationBase spec)
        {
            //initialize the ModelCheckingOptions
            base.Initialize(spec);

            Specification Spec = spec as Specification;

            ReachableStateCondition = Spec.DeclarationDatabase[ReachableStateLabel];

            List <string> varList = Process.GetGlobalVariables();

            varList.AddRange(ReachableStateCondition.GetVars());

            Valuation GlobalEnv = Spec.SpecValuation.GetVariableChannelClone(varList, Process.GetChannels());

            //Initialize InitialStep
            InitialStep = new Configuration(Process, Constants.INITIAL_EVENT, null, GlobalEnv, false);

            MustAbstract = Process.MustBeAbstracted();
        }
Esempio n. 3
0
        public override void Initialize(SpecificationBase spec)
        {
            Specification Spec = spec as Specification;

            ReachableStateCondition = Spec.DeclarationDatabase[ReachableStateLabel];

            PAT.Common.Ultility.ParsingUltility.TestIsBooleanExpression(
                ReachableStateCondition,
                new CommonToken(null, -1, -1, -1, -1),
                " used in the condition \"" + ReachableStateLabel + "\" of reachablity assertion \"" + this.ToString() + "\"",
                Spec.SpecValuation,
                new Dictionary <string, Expression>()
                );

            List <string> varList = Process.GetGlobalVariables();

            varList.AddRange(ReachableStateCondition.GetVars());

            Valuation GlobalEnv = Spec.SpecValuation.GetVariableChannelClone(varList, Spec.GetChannelNames(Process.GetChannels()));

            //Initialize InitialStep
            InitialStep = new Configuration(Process, Constants.INITIAL_EVENT, null, GlobalEnv, false);

            MustAbstract = Process.MustBeAbstracted();

            //base.Initialize(spec);

            //initialize model checking options, the default option is for deadlock/reachablity algorithms
            ModelCheckingOptions = new ModelCheckingOptions();
            List <string> DeadlockEngine = new List <string>();

            if (!(spec as Specification).HasWildVariable)
            {
                DeadlockEngine.Add(Constants.ENGINE_DEPTH_FIRST_SEARCH);
                DeadlockEngine.Add(Constants.ENGINE_BREADTH_FIRST_SEARCH);
            }

            ModelCheckingOptions.AddAddimissibleBehavior(Constants.COMPLETE_BEHAVIOR, DeadlockEngine);
        }