diff options
Diffstat (limited to 'lib')
-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. |