3
(set-enforce-redundancy t)
6
(include-book "rtlarr")
7
(local (include-book "../support/bvecp-helpers"))
9
(defthm bv-arrp-implies-nonnegative-integerp
10
(implies (bv-arrp obj size)
11
(and (integerp (ag index obj))
12
(<= 0 (ag index obj))))
13
:rule-classes (:rewrite :type-prescription)
16
; The two events following the next local include-book were added by Matt
17
; K. June 2004: Some proofs require calls of expt to be evaluated, but some
18
; calls are just too large (2^2^n for large n). So we use the following hack,
19
; which allows calls of 2^n for n<130 to be evaluated even when the
20
; executable-counterpart of expt is disabled. The use of 130 is somewhat
21
; arbitrary, chosen in the hope that it suffices for relieving of hyps related
22
; to widths of bit vectors
24
(local (include-book "../../arithmetic/basic"))
26
(defun expt-exec (r i)
27
(declare (xargs :guard
30
(not (and (eql r 0) (< i 0))))))
31
(mbe :logic (hide (expt r i)) ; hide may avoid potential loop
34
(defthm expt-2-evaluator
35
(implies (syntaxp (and (quotep n)