Skip to content

Conversation

Hzfengsy
Copy link
Member

Fix a bug in canonical simplification of less-than expressions where the algorithm incorrectly assumed variables could have negative values when simplifying expressions of the form ax + b < c.

The previous implementation checked if -d < xn < d before simplifying, but this was incorrect when variables are constrained to non-negative ranges. For example, with constraints 0 < x, y < 2 and expression 2x + y < 8, the algorithm would incorrectly check if -2 < y < 2 and then simplify to x < 4. However, when x=4 and y=-1, we get 2*4 + (-1) = 7 < 8, which satisfies the original constraint but violates the intended variable bounds.

The fix changes the range check to 0 <= xn < d, ensuring that simplification only occurs when variables are properly bounded from below at zero.

Fix a bug in canonical simplification of less-than expressions where
the algorithm incorrectly assumed variables could have negative values
when simplifying expressions of the form `ax + b < c`.

The previous implementation checked if `-d < xn < d` before simplifying,
but this was incorrect when variables are constrained to non-negative
ranges. For example, with constraints `0 < x, y < 2` and expression
`2x + y < 8`, the algorithm would incorrectly check if `-2 < y < 2`
and then simplify to `x < 4`. However, when x=4 and y=-1, we get
2*4 + (-1) = 7 < 8, which satisfies the original constraint but
violates the intended variable bounds.

The fix changes the range check to `0 <= xn < d`, ensuring that
simplification only occurs when variables are properly bounded
from below at zero.

Co-authored-by: FeiyangChen <[email protected]>
@Hzfengsy
Copy link
Member Author

@tvm-bot rerun

@Hzfengsy Hzfengsy merged commit 731f133 into apache:main Jun 1, 2025
12 checks passed
@Hzfengsy Hzfengsy deleted the fix_le_simplify branch June 17, 2025 13:14
ShiboXing pushed a commit to ShiboXing/tvm that referenced this pull request Aug 10, 2025
apache#18025)

Fix a bug in canonical simplification of less-than expressions where
the algorithm incorrectly assumed variables could have negative values
when simplifying expressions of the form `ax + b < c`.

The previous implementation checked if `-d < xn < d` before simplifying,
but this was incorrect when variables are constrained to non-negative
ranges. For example, with constraints `0 < x, y < 2` and expression
`2x + y < 8`, the algorithm would incorrectly check if `-2 < y < 2`
and then simplify to `x < 4`. However, when x=4 and y=-1, we get
2*4 + (-1) = 7 < 8, which satisfies the original constraint but
violates the intended variable bounds.

The fix changes the range check to `0 <= xn < d`, ensuring that
simplification only occurs when variables are properly bounded
from below at zero.

Co-authored-by: FeiyangChen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants