private static void ChannelInputSetVariable(List <Expression> exps, AutomataBDD P1, Model model, AutomataBDD result) { //Add new variable used in channel input foreach (var expression in exps) { if (!(expression is IntConstant) && !model.ContainsVar(expression.ExpressionID)) { model.AddLocalVar(expression.ExpressionID, Model.MIN_ELEMENT_BUFFER, Model.MAX_ELEMENT_BUFFER); result.variableIndex.Add(model.GetNumberOfVars() - 1); } } EventPrefixSetVariable(P1, model, result); }
private static void ChannelInputSetVariable(List<Expression> exps, AutomataBDD P1, Model model, AutomataBDD result) { //Add new variable used in channel input foreach (var expression in exps) { if (!(expression is IntConstant) && !model.ContainsVar(expression.ExpressionID)) { model.AddLocalVar(expression.ExpressionID, Model.MIN_ELEMENT_BUFFER, Model.MAX_ELEMENT_BUFFER); result.variableIndex.Add(model.GetNumberOfVars() - 1); } } EventPrefixSetVariable(P1, model, result); }
/// <summary> /// Create a new local variable /// </summary> public override ExpressionBDDEncoding TranslateStatementToBDD(ExpressionBDDEncoding resultBefore, Model model) { //Create new local variable if not exists if (!model.ContainsVar(this.Variable)) { model.AddLocalVar(this.Variable, Model.BDD_INT_LOWER_BOUND, Model.BDD_INT_UPPER_BOUND); } //If there is an initialization then do it based on the resultBefore if (this.RightHandExpression == null) { return resultBefore; } else { return (new Assignment(this.Variable, RightHandExpression)).TranslateStatementToBDD(resultBefore, model); } }