public override void MakeDiscreteTransition(List <Expression> guards, List <Event> events, List <Expression> programBlocks, List <Process> processes, Model model, SymbolicLTS lts) { lts.AddParaInChannelAsLocalVar(ExpressionList); if (model.mapChannelToSize.ContainsKey(ChannelName)) { List <Expression> guardUpdateChannel = AutomataBDD.GetGuardUpdateOfChannelInput(this.ChannelName, new BoolConstant(true), new List <Expression>(ExpressionList), AssignmentExpr, model); guardUpdateChannel[0] = Expression.AND(guardUpdateChannel[0], this.GuardExpression); Event channelInput = new BDDEncoder.EventChannelInfo(this.ChannelName, 0, BDDEncoder.EventChannelInfo.EventType.ASYNC_CHANNEL_INPUT); guards.Add(guardUpdateChannel[0]); events.Add(channelInput); programBlocks.Add(guardUpdateChannel[1]); processes.Add(Process); } else { Event channelInput = new BDDEncoder.EventChannelInfo(this.ChannelName, 0, BDDEncoder.EventChannelInfo.EventType.SYNC_CHANNEL_INPUT); channelInput.ExpressionList = this.ExpressionList; guards.Add(null); events.Add(channelInput); programBlocks.Add(null); processes.Add(Process); } }
public override void MakeDiscreteTransition(List <Expression> guards, List <Event> events, List <Expression> programBlocks, List <Process> processes, Model model, SymbolicLTS lts) { if (model.mapChannelToSize.ContainsKey(ChannelName)) { List <Expression> guardUpdateChannel = AutomataBDD.GetGuardUpdateOfChannelOutput(this.ChannelName, new List <Expression>(ExpressionList), null, model); Event channelOutput = new BDDEncoder.EventChannelInfo(this.ChannelName, 0, BDDEncoder.EventChannelInfo.EventType.ASYNC_CHANNEL_OUTPUT); guards.Add(guardUpdateChannel[0]); events.Add(channelOutput); programBlocks.Add(guardUpdateChannel[1]); processes.Add(Process); } else { Event channelOutput = new BDDEncoder.EventChannelInfo(this.ChannelName, 0, BDDEncoder.EventChannelInfo.EventType.SYNC_CHANNEL_OUTPUT); channelOutput.ExpressionList = this.ExpressionList; guards.Add(null); events.Add(channelOutput); programBlocks.Add(null); processes.Add(Process); } }