Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        /// <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);
            }
        }