diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-02-12 10:07:58 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-02-12 10:07:58 +0000 |
commit | ccac82c79b5a19ded67b2381c48e3e73ddd5449b (patch) | |
tree | 576c4cd0ded0fb527d6694f0292d39c026856475 /lib/Integers.v | |
parent | 6f3225b0623b9c97eed7d40ddc320b08c79c6518 (diff) | |
download | compcert-ccac82c79b5a19ded67b2381c48e3e73ddd5449b.tar.gz compcert-ccac82c79b5a19ded67b2381c48e3e73ddd5449b.zip |
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/Integers.v')
-rw-r--r-- | lib/Integers.v | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Integers.v b/lib/Integers.v index 3609fdaa..0575436a 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. |