public override IntervalEnvironmentBase <TVar, TExpr, TInterval, Rational> AssumeNotEqualToZero (TExpr e, IntervalEnvironmentBase < TVar , TExpr , TInterval , Rational > env) { var variable = env.Decoder.UnderlyingVariable(e); var intv = env.Eval(e); TInterval refinement; if (intv.LowerBound.IsZero) { refinement = env.Context.For(1L, intv.UpperBound); } else if (intv.UpperBound.IsZero) { refinement = env.Context.For(intv.LowerBound, -1L); } else { refinement = env.Context.TopValue; } return(env.With(variable, intv.Meet(refinement))); }
public override IntervalEnvironmentBase <TVar, TExpr, TInterval, Rational> AssumeLessEqualThan ( TInterval intv, TVar right, IntervalEnvironmentBase <TVar, TExpr, TInterval, Rational> env) { TInterval refined; if ( !IntervalInference.ConstraintsFor.TryRefineLessEqualThan <IntervalEnvironmentBase <TVar, TExpr, TInterval, Rational>, TVar, TExpr, TInterval> (intv, right, env, out refined)) { return(env); } return(env.With(right, refined)); }