Esempio n. 1
0
        private static string OperatorFor(ADomains index)
        {
            Contract.Ensures(Contract.Result <string>() != null);

            Contract.Assert(index >= 0);
            Contract.Assert((int)index < WeaklyRelationalDomainsCount);

            switch (index)
            {
            case ADomains.Equalities:
                return("=");

            case ADomains.DisEqualities:
                return("!=");

            case ADomains.StrictUpperBounds:
                return("<");

            case ADomains.WeakUpperBounds:
                return("<=");

            case ADomains.Existential:
                return("E");

            default:
            {
                Contract.Assert(false);         // should be unreachable
                return("");
            }
            }
        }
Esempio n. 2
0
        public NonRelationalValueAbstraction <Variable, Expression> Update(ADomains what, SetOfConstraints <Variable> value)
        {
            #region Contracts

            Contract.Requires(value != null);
            Contract.Ensures(Contract.Result <NonRelationalValueAbstraction <Variable, Expression> >() != null);

            Contract.Assert(Enum.IsDefined(typeof(ADomains), what));

            #endregion

            var copy = new SetOfConstraints <Variable> [weaklyRelationalDomains.Length];
            Array.Copy(weaklyRelationalDomains, copy, weaklyRelationalDomains.Length);

            copy[(int)what] = value;

            return(new NonRelationalValueAbstraction <Variable, Expression>(disInterval, symbolicConditions, copy));
        }