From ccac82c79b5a19ded67b2381c48e3e73ddd5449b Mon Sep 17 00:00:00 2001 From: xleroy Date: Tue, 12 Feb 2013 10:07:58 +0000 Subject: Forgot theorem "sign_ext_narrow". git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2111 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- lib/Integers.v | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib') 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. -- cgit v1.2.3