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)); }
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)); }
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))); }