private static void WriteInit(Module module) { string op = SMVKeys.ASSIGN + "\n"; if (module.HasDivisionRule || module.HasDissolutionRule) { op += TVariables.InitVariable(module.Status); } op += TVariables.InitVariable(module.Turn); if (module.HasArbitraryStrategy || module.HasSequenceStrategy || module.HasMaxStrategy) { op += TVariables.InitVariable(module.Count); } //execution strategy variables, e.g. choice int strategyIndex = 0; foreach (var strategy in module.ExecutionStrategies) { foreach (var variable in strategy.CustomVars) { op += TVariables.InitVariable(variable); } strategyIndex++; } // model variables foreach (var variable in module.Variables) { op += TVariables.InitVariable(variable); } Writer.WriteLine(op); }
private static void WriteMain(SMVModel nuSMV) { TUtil.AddDashedComment("MAIN"); string op = SMVKeys.MODULE + " " + SMVKeys.MAIN + "\n"; op += SMVKeys.VAR + "\n"; //write synch,and PStep vars at first. op += TVariables.VariableDefinition(nuSMV.MainModule.Synch); op += TVariables.VariableDefinition(nuSMV.MainModule.PStep); //write instances foreach (var module in nuSMV.Modules) { //parent instance op += TVariables.Instances(module.Instance); //if exists, then child instances if (module.HasDivisionRule) { foreach (var childInstance in module.ChildInstances) { op += TVariables.Instances(childInstance); } } } op += SMVKeys.ASSIGN + "\n"; //write init of synch and PStep vars op += TVariables.InitVariable(nuSMV.MainModule.Synch); op += TVariables.InitVariable(nuSMV.MainModule.PStep); //write next of synch and PStep vars op += TVariables.VariableNext(nuSMV.MainModule.Synch); op += TVariables.VariableNext(nuSMV.MainModule.PStep); Writer.WriteLine(op); }