-
Notifications
You must be signed in to change notification settings - Fork 78
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fixed a couple of bugs in the handling of div/rem in INT_ARITH that
were collectively limiting its ability to reason about formulas using several div/rem operations with distinct arguments. For example, this didn't work before but now does: let hbar = prove (`!x. abs x <= &2 pow 15 ==> let sqdmulh = (&2 * &0x4ebf * x) div &2 pow 16 in let srshr = (sqdmulh + &2 pow 10) div &2 pow 11 in abs(x - &3329 * srshr) <= &1664`, CONV_TAC(TOP_DEPTH_CONV let_CONV) THEN INT_ARITH_TAC);; Also fixed identical degenerate-case bugs in the decision procedures RING_RULE and INTEGRAL_DOMAIN_RULE (the latter bug being also inherited by FIELD_TAC). Previously these would fail if the input problem was so trivial that the initial normalization converted it to "true", e.g. RING_RULE `x:A = ring_1 r ==> x = ring_1 r`;; INTEGRAL_DOMAIN_RULE `ring_mul r x z = y ==> ring_mul r x z = y`;; Also added a few more very basic ring lemmas: FIELD_POLY_RING IMAGE_POLY_EXTEND POLY_VAR_EQ_CONST
- Loading branch information
Showing
3 changed files
with
94 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters