boolean (@NotNull RelationType type, @NotNull DfaVariableValue left, @NotNull LongRangeSet leftRange, @NotNull LongRangeSet rightRange, @NotNull DfaValue sum, @NotNull LongRangeType lrType) { if (!leftRange.additionMayOverflow(rightRange, lrType)) { // a-positiveNumber >= b => a > b if (rightRange.max() < 0 && RelationType.GE.isSubRelation(type)) { if (!applyLessThanRelation(sum, left)) return false; } // a+positiveNumber >= b => a > b if (rightRange.min() > 0 && RelationType.LE.isSubRelation(type)) { if (!applyLessThanRelation(left, sum)) return false; } } if (RelationType.EQ == type && !rightRange.contains(0)) { // a+nonZero == b => a != b if (!applyRelation(left, sum, true)) return false; } return true; }