コード例 #1
0
        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());

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

            //Initialize InitialStep
            InitialStep = new PNConfiguration(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);

            }
        }
コード例 #2
0
ファイル: PNAssertionLTL.cs プロジェクト: nhannhan159/PAT
        public override void Initialize(SpecificationBase spec)
        {
            Specification Spec = spec as Specification;

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

            BA.Initialize(Spec.DeclarationDatabase);

            foreach (KeyValuePair<string, Expression> pair in BA.DeclarationDatabase)
            {
                varList.AddRange(pair.Value.GetVars());
            }

            // editted by Tinh
            Valuation GlobalEnv = Spec.SpecValuation.GetClone();

            InitialStep = new PNConfiguration(Process, Constants.INITIAL_EVENT, null, GlobalEnv, false, spec);

            MustAbstract = Process.MustBeAbstracted();

            base.Initialize(spec);
        }
コード例 #3
0
ファイル: PNConfiguration.cs プロジェクト: nhannhan159/PAT
        public override IEnumerable<ConfigurationBase> MakeOneMove()
        {
            var nextPNConfigurations = new List<PNConfiguration>();

            foreach (var t in Process.Transitions)
            {
                if (t.GuardCondition != null)
                {
                    ExpressionValue v = EvaluatorDenotational.Evaluate(t.GuardCondition, GlobalEnv);
                    if (!(v as BoolConstant).Value)
                        continue;

                    //transition can fire --> move one step
                    var newGlobleEnv = GlobalEnv.GetVariableClone();
                    EvaluatorDenotational.Evaluate(t.ProgramBlock, newGlobleEnv);

                    var name = t.Event.GetEventName(GlobalEnv);
                    var id = t.Event.GetEventID(GlobalEnv);

                    var newConfiguration = new PNConfiguration(Process, id, name, newGlobleEnv, IsDataOperation);
                    nextPNConfigurations.Add(newConfiguration);
                }
                else
                {
                    //SOME THING WRONG HERE:
                    System.Diagnostics.Debug.WriteLine("Transition don't have guardCondition/fired condition.");
                }
            }

            if (nextPNConfigurations.Count == 0)
                IsDeadLock = true;

            return nextPNConfigurations;
        }
コード例 #4
0
        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());
            // editted by Tinh
            Valuation GlobalEnv = Spec.SpecValuation.GetClone();

            //Initialize InitialStep
            // editted by Tinh
            InitialStep = new PNConfiguration(Process, Constants.INITIAL_EVENT, null, GlobalEnv, false, spec);
            MustAbstract = Process.MustBeAbstracted();
        }