Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add knowledge about floor/ceil bounds
In the RIA prelude, we have axioms with semantic triggers to propagate bounds on reals to bounds on integers using `real_of_int` (`real_of_int_to_int_1` and `real_of_int_to_int_2`). These state respectively that: - If `real_of_int(i) ≤ y` holds in the reals, then `i ≤ int_floor(y)` holds in the integers. - If `y ≤ real_of_int(i)` holds in the reals, then `int_ceil(y) ≤ i` holds in the integers. This patch adds the corresponding propagations from bounds on integers to bounds on reals. More precisely it adds the propagations: - If `int_floor(x) ≤ i` holds in the integers, `x < real_of_int(i + 1)` holds in the reals - If `i ≤ int_floor(x)` holds in the integers, `real_of_int(i) ≤ x` holds in the reals - If `int_ceil(x) ≤ i` holds in the integers, `x ≤ real_of_int(i)` holds in the reals - If `i ≤ int_ceil(x)` holds in the integers, `real_of_int(i - 1) < x` holds in the reals (Note that the test has "unknown" expected but it should be SAT -- this is because the ria prelude is disabled currently)
- Loading branch information