protected override INumericalAbstractDomain <BoxedExpression> HelperForJoin( INumericalAbstractDomain <BoxedExpression> newState, INumericalAbstractDomain <BoxedExpression> prevState, Pair <APC, APC> edge) { return((SubPolyhedra <BoxedExpression>)newState.Join(prevState)); }
/// <summary> /// Must implement the join/widen operation /// </summary> /// <param name="edge"></param> /// <param name="newState"></param> /// <param name="prevState"></param> /// <param name="weaker">should return false if result is less than or equal prevState.</param> /// <param name="widen">true if this is a widen operation. For our INumericalAbstractDomain<Expression>, this makes no difference</param> public INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> Join(Pair <APC, APC> edge, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> newState, INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> prevState, out bool weaker, bool widen) { INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression> result = (INumericalAbstractDomain <BoxedVariable <Variable>, BoxedExpression>)prevState.Join(newState); weaker = !prevState.LessEqual(newState); return(result); }