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(); }
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); }