summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-02-12 10:07:58 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-02-12 10:07:58 +0000
commitccac82c79b5a19ded67b2381c48e3e73ddd5449b (patch)
tree576c4cd0ded0fb527d6694f0292d39c026856475 /lib
parent6f3225b0623b9c97eed7d40ddc320b08c79c6518 (diff)
Forgot theorem "sign_ext_narrow".
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2111 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'lib')
-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.