aboutsummaryrefslogtreecommitdiff
path: root/src/Util/ZUtil.v
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2016-11-02 15:35:44 -0400
committerGravatar Jason Gross <jgross@mit.edu>2016-11-02 15:35:44 -0400
commit47c1c427ca53ab6844b49a03cff6ee265cad90f7 (patch)
treea252dcc9a7bca369d4d8395bb93cc335d493780a /src/Util/ZUtil.v
parent59e9926895f9e12b30b2381a0a1e5700601dfeb4 (diff)
Add more ZUtil
Diffstat (limited to 'src/Util/ZUtil.v')
-rw-r--r--src/Util/ZUtil.v18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/Util/ZUtil.v b/src/Util/ZUtil.v
index c76d5fb9a..dc8572a8e 100644
--- a/src/Util/ZUtil.v
+++ b/src/Util/ZUtil.v
@@ -2079,6 +2079,24 @@ Module Z.
Qed.
Hint Resolve ones_lt_pow2 : zarith.
+ Lemma log2_ones_full x : Z.log2 (Z.ones x) = Z.max 0 (Z.pred x).
+ Proof.
+ rewrite Z.ones_equiv, log2_pred_pow2_full; reflexivity.
+ Qed.
+ Hint Rewrite log2_ones_full : zsimplify.
+
+ Lemma log2_ones_lt x y : 0 < x <= y -> Z.log2 (Z.ones x) < y.
+ Proof.
+ rewrite log2_ones_full; apply Z.max_case_strong; omega.
+ Qed.
+ Hint Resolve log2_ones_lt : zarith.
+
+ Lemma log2_ones_le x y : 0 <= x <= y -> Z.log2 (Z.ones x) <= y.
+ Proof.
+ rewrite log2_ones_full; apply Z.max_case_strong; omega.
+ Qed.
+ Hint Resolve log2_ones_le : zarith.
+
Lemma simplify_twice_sub_sub x y : 2 * x - (x - y) = x + y.
Proof. lia. Qed.
Hint Rewrite simplify_twice_sub_sub : zsimplify.