summaryrefslogtreecommitdiff
path: root/lib/Integers.v
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Integers.v')
-rw-r--r--lib/Integers.v12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Integers.v b/lib/Integers.v
index 3609fda..0575436 100644
--- a/lib/Integers.v
+++ b/lib/Integers.v
@@ -3058,6 +3058,18 @@ Proof.
omega. omega. omega.
Qed.
+Theorem sign_ext_narrow:
+ forall x n n', 0 < n <= n' ->
+ sign_ext n (sign_ext n' x) = sign_ext n x.
+Proof.
+ intros. destruct (zlt n zwordsize).
+ bit_solve. destruct (zlt i n); f_equal; apply zlt_true; omega.
+ omega.
+ destruct (zlt i n); omega.
+ omega. omega.
+ rewrite (sign_ext_above n'). auto. omega.
+Qed.
+
Theorem zero_sign_ext_narrow:
forall x n n', 0 < n <= n' ->
zero_ext n (sign_ext n' x) = zero_ext n x.