Monotonicity properties for the basic svex functions.
Theorem:
(defthm 4vec-fix-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-fix x) (4vec-fix x1))))
Theorem:
(defthm 3vec-fix-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (3vec-fix x) (3vec-fix x1))))
Theorem:
(defthm 4vec-bitnot-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-bitnot x) (4vec-bitnot x1))))
Theorem:
(defthm 4vec-onset-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-onset x) (4vec-onset x1))))
Theorem:
(defthm 4vec-offset-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-offset x) (4vec-offset x1))))
Theorem:
(defthm 4vec-bitand-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-bitand x y) (4vec-bitand x1 y1))))
Theorem:
(defthm 4vec-bitor-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-bitor x y) (4vec-bitor x1 y1))))
Theorem:
(defthm 4vec-bitxor-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-bitxor x y) (4vec-bitxor x1 y1))))
Theorem:
(defthm 4vec-res-monotonic (implies (and (4vec-<<= a a1) (4vec-<<= b b1)) (4vec-<<= (4vec-res a b) (4vec-res a1 b1))))
Theorem:
(defthm 4vec-resand-monotonic (implies (and (4vec-<<= a a1) (4vec-<<= b b1)) (4vec-<<= (4vec-resand a b) (4vec-resand a1 b1))))
Theorem:
(defthm 4vec-resor-monotonic (implies (and (4vec-<<= a a1) (4vec-<<= b b1)) (4vec-<<= (4vec-resor a b) (4vec-resor a1 b1))))
Theorem:
(defthm 4vec-override-monotonic (implies (and (4vec-<<= stronger stronger1) (4vec-<<= weaker weaker1)) (4vec-<<= (4vec-override stronger weaker) (4vec-override stronger1 weaker1))))
Theorem:
(defthm 4vec-reduction-and-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-reduction-and x) (4vec-reduction-and x1))))
Theorem:
(defthm 4vec-reduction-or-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-reduction-or x) (4vec-reduction-or x1))))
Theorem:
(defthm 4vec-zero-ext-monotonic (implies (and (4vec-<<= n n1) (4vec-<<= x x1)) (4vec-<<= (4vec-zero-ext n x) (4vec-zero-ext n1 x1))))
Theorem:
(defthm 4vec-sign-ext-monotonic (implies (and (4vec-<<= n n1) (4vec-<<= x x1)) (4vec-<<= (4vec-sign-ext n x) (4vec-sign-ext n1 x1))))
Theorem:
(defthm 2vecx-fix-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (2vecx-fix x) (2vecx-fix x1))))
Theorem:
(defthm 2vecnatx-fix-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (2vecnatx-fix x) (2vecnatx-fix x1))))
Theorem:
(defthm 4vec-concat-monotonic (implies (and (4vec-<<= width width1) (4vec-<<= low low1) (4vec-<<= high high1)) (4vec-<<= (4vec-concat width low high) (4vec-concat width1 low1 high1))))
Theorem:
(defthm 4vec-rsh-monotonic (implies (and (4vec-<<= amt amt1) (4vec-<<= src src1)) (4vec-<<= (4vec-rsh amt src) (4vec-rsh amt1 src1))))
Theorem:
(defthm 4vec-lsh-monotonic (implies (and (4vec-<<= amt amt1) (4vec-<<= src src1)) (4vec-<<= (4vec-lsh amt src) (4vec-lsh amt1 src1))))
Theorem:
(defthm 4vec-parity-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-parity x) (4vec-parity x1))))
Theorem:
(defthm 4vec-plus-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-plus x y) (4vec-plus x1 y1))))
Theorem:
(defthm 4vec-minus-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-minus x y) (4vec-minus x1 y1))))
Theorem:
(defthm 4vec-uminus-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-uminus x) (4vec-uminus x1))))
Theorem:
(defthm 4vec-xdet-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-xdet x) (4vec-xdet x1))))
Theorem:
(defthm 4vec-countones-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-countones x) (4vec-countones x1))))
Theorem:
(defthm 4vec-onehot-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-onehot x) (4vec-onehot x1))))
Theorem:
(defthm 4vec-onehot0-monotonic (implies (and (4vec-<<= x x1)) (4vec-<<= (4vec-onehot0 x) (4vec-onehot0 x1))))
Theorem:
(defthm 4vec-times-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-times x y) (4vec-times x1 y1))))
Theorem:
(defthm 4vec-quotient-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-quotient x y) (4vec-quotient x1 y1))))
Theorem:
(defthm 4vec-remainder-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-remainder x y) (4vec-remainder x1 y1))))
Theorem:
(defthm 4vec-<-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-< x y) (4vec-< x1 y1))))
Theorem:
(defthm 4vec-==-monotonic (implies (and (4vec-<<= x x1) (4vec-<<= y y1)) (4vec-<<= (4vec-== x y) (4vec-== x1 y1))))
Theorem:
(defthm 4vec-?-monotonic (implies (and (4vec-<<= test test1) (4vec-<<= then then1) (4vec-<<= else else1)) (4vec-<<= (4vec-? test then else) (4vec-? test1 then1 else1))))
Theorem:
(defthm 4vec-bit?-monotonic (implies (and (4vec-<<= tests tests1) (4vec-<<= thens thens1) (4vec-<<= elses elses1)) (4vec-<<= (4vec-bit? tests thens elses) (4vec-bit? tests1 thens1 elses1))))
Theorem:
(defthm 4vec-?*-monotonic (implies (and (4vec-<<= test test1) (4vec-<<= then then1) (4vec-<<= else else1)) (4vec-<<= (4vec-?* test then else) (4vec-?* test1 then1 else1))))
Theorem:
(defthm 4vec-bit-extract-monotonic (implies (and (4vec-<<= n n1) (4vec-<<= x x1)) (4vec-<<= (4vec-bit-extract n x) (4vec-bit-extract n1 x1))))
Theorem:
(defthm 4vec-rev-blocks-monotonic (implies (and (4vec-<<= nbits nbits1) (4vec-<<= blocksz blocksz1) (4vec-<<= x x1)) (4vec-<<= (4vec-rev-blocks nbits blocksz x) (4vec-rev-blocks nbits1 blocksz1 x1))))
Theorem:
(defthm 4vec-wildeq-safe-monotonic (implies (and (4vec-<<= a a1) (4vec-<<= b b1)) (4vec-<<= (4vec-wildeq-safe a b) (4vec-wildeq-safe a1 b1))))
Theorem:
(defthm 4vec-symwildeq-monotonic (implies (and (4vec-<<= a a1) (4vec-<<= b b1)) (4vec-<<= (4vec-symwildeq a b) (4vec-symwildeq a1 b1))))
Theorem:
(defthm 4vec-clog2-monotonic (implies (and (4vec-<<= a a1)) (4vec-<<= (4vec-clog2 a) (4vec-clog2 a1))))
Theorem:
(defthm 4vec-pow-monotonic (implies (and (4vec-<<= base base1) (4vec-<<= exp exp1)) (4vec-<<= (4vec-pow base exp) (4vec-pow base1 exp1))))
Theorem:
(defthm 4vec-part-select-monotonic (implies (and (4vec-<<= lsb lsb1) (4vec-<<= width width1) (4vec-<<= in in1)) (4vec-<<= (4vec-part-select lsb width in) (4vec-part-select lsb1 width1 in1))))
Theorem:
(defthm 4vec-part-install-monotonic (implies (and (4vec-<<= lsb lsb1) (4vec-<<= width width1) (4vec-<<= in in1) (4vec-<<= val val1)) (4vec-<<= (4vec-part-install lsb width in val) (4vec-part-install lsb1 width1 in1 val1))))
Theorem:
(defthm 4vec-==-<<=-=== (4vec-<<= (4vec-== a b) (4vec-=== a b)))
Theorem:
(defthm 4vec-==-<<=-===-ext2 (implies (4vec-<<= x (4vec-== a b)) (4vec-<<= x (4vec-=== a b))))
Theorem:
(defthm 4vec-==-<<=-===-ext1 (implies (4vec-<<= (4vec-=== a b) x) (4vec-<<= (4vec-== a b) x)))
Theorem:
(defthm 4vec-===*-<<=-=== (4vec-<<= (4vec-===* a b) (4vec-=== a b)))
Theorem:
(defthm 4vec-===*-<<=-===-ext2 (implies (4vec-<<= x (4vec-===* a b)) (4vec-<<= x (4vec-=== a b))))
Theorem:
(defthm 4vec-===*-<<=-===-ext1 (implies (4vec-<<= (4vec-=== a b) x) (4vec-<<= (4vec-===* a b) x)))
Theorem:
(defthm 4vec-===*-<<=-===-rev (4vec-<<= (4vec-===* a b) (4vec-=== b a)))
Theorem:
(defthm 4vec-==-<<=-===* (4vec-<<= (4vec-== a b) (4vec-===* a b)))
Theorem:
(defthm 4vec-===*-monotonic-when-second-const (implies (4vec-<<= a b) (4vec-<<= (4vec-===* a c) (4vec-===* b c))))
Theorem:
(defthm 4vec-wildeq-safe-<<=-wildeq (4vec-<<= (4vec-wildeq-safe a b) (4vec-wildeq a b)))
Theorem:
(defthm 4vec-wildeq-safe-<<=-wildeq-ext2 (implies (4vec-<<= x (4vec-wildeq-safe a b)) (4vec-<<= x (4vec-wildeq a b))))
Theorem:
(defthm 4vec-wildeq-monotonic-when-second-const (implies (4vec-<<= a b) (4vec-<<= (4vec-wildeq a c) (4vec-wildeq b c))))
Theorem:
(defthm 4vec-bit?!-monotonic-on-nontest-args (implies (and (4vec-<<= then1 then2) (4vec-<<= else1 else2)) (4vec-<<= (4vec-bit?! test then1 else1) (4vec-bit?! test then2 else2))))
Theorem:
(defthm 4vec-bit?-<<=-bit?! (4vec-<<= (4vec-bit? test then else) (4vec-bit?! test then else)))
Theorem:
(defthm 4vec-bit?-<<=-bit?!-ext2 (implies (4vec-<<= x (4vec-bit? test then else)) (4vec-<<= x (4vec-bit?! test then else))))
Theorem:
(defthm 4vec-?!-monotonic-on-nontest-args (implies (and (4vec-<<= then1 then2) (4vec-<<= else1 else2)) (4vec-<<= (4vec-?! test then1 else1) (4vec-?! test then2 else2))))
Theorem:
(defthm 4vec-?*-<<=-?! (4vec-<<= (4vec-?* test then else) (4vec-?! test then else)))
Theorem:
(defthm 4vec-?*-<<=-?!-ext2 (implies (4vec-<<= x (4vec-?* test then else)) (4vec-<<= x (4vec-?! test then else))))