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