private static CompoundInterval abstractionOf(CompoundInterval pValue) { if (pValue.isBottom() || pValue.isTop()) { return pValue; } CompoundInterval result = pValue.signum(); boolean extendToNeg = false; if (!pValue.lessThan(result).isDefinitelyFalse()) { extendToNeg = true; } if (!pValue.greaterThan(result).isDefinitelyFalse()) { result = result.extendToPositiveInfinity(); } if (extendToNeg) { result = result.extendToNegativeInfinity(); } assert result.unionWith(pValue).equals(result); return result; }