Beispiel #1
0
        public EnumDefined <Variable, Type, Expression> Widening(EnumDefined <Variable, Type, Expression> other)
        {
            Contract.Requires(other != null);
            Contract.Ensures(Contract.Result <EnumDefined <Variable, Type, Expression> >() != null);

            return(this.Join(other));
        }
Beispiel #2
0
        public bool LessEqual(EnumDefined <Variable, Type, Expression> other)
        {
            Contract.Requires(other != null);

            bool direct;

            if (AbstractDomainsHelper.TryTrivialLessEqual(this, other, out direct))
            {
                return(direct);
            }

            Contract.Assume(other.conditions != null);
            Contract.Assume(other.defined != null);

            return(conditions.LessEqual(other.conditions) && defined.LessEqual(other.defined));
        }
Beispiel #3
0
        public EnumDefined <Variable, Type, Expression> Meet(EnumDefined <Variable, Type, Expression> other)
        {
            Contract.Requires(other != null);
            Contract.Ensures(Contract.Result <EnumDefined <Variable, Type, Expression> >() != null);

            EnumDefined <Variable, Type, Expression> result;

            if (AbstractDomainsHelper.TryTrivialMeet(this, other, out result))
            {
                return(result);
            }

            Contract.Assume(other.conditions != null);
            Contract.Assume(other.defined != null);

            return(new EnumDefined <Variable, Type, Expression>(conditions.Meet(other.conditions), defined.Meet(other.defined)));
        }