Rules for reducing inequalities between products, canceling like factors, and comparing products against 0.
Theorem:
(defthm <-*-right-cancel (implies (and (fc (real/rationalp x)) (fc (real/rationalp y)) (fc (real/rationalp z))) (equal (< (* x z) (* y z)) (cond ((< 0 z) (< x y)) ((equal z 0) nil) (t (< y x))))))
Theorem:
(defthm <-*-left-cancel (implies (and (fc (real/rationalp x)) (fc (real/rationalp y)) (fc (real/rationalp z))) (equal (< (* z x) (* z y)) (cond ((< 0 z) (< x y)) ((equal z 0) nil) (t (< y x))))))
Theorem:
(defthm <-*-0 (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< (* x y) 0) (and (not (equal x 0)) (not (equal y 0)) (iff (< x 0) (< 0 y))))))
Theorem:
(defthm 0-<-* (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< 0 (* x y)) (and (not (equal x 0)) (not (equal y 0)) (iff (< 0 x) (< 0 y))))))
Theorem:
(defthm <-*-x-y-y (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< (* x y) y) (cond ((equal y 0) nil) ((< 0 y) (< x 1)) (t (< 1 x))))))
Theorem:
(defthm <-*-y-x-y (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< (* y x) y) (cond ((equal y 0) nil) ((< 0 y) (< x 1)) (t (< 1 x))))))
Theorem:
(defthm <-y-*-x-y (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< y (* x y)) (cond ((equal y 0) nil) ((< 0 y) (< 1 x)) (t (< x 1))))))
Theorem:
(defthm <-y-*-y-x (implies (and (fc (real/rationalp x)) (fc (real/rationalp y))) (equal (< y (* y x)) (cond ((equal y 0) nil) ((< 0 y) (< 1 x)) (t (< x 1))))))
Theorem:
(defthm *-preserves->=-for-nonnegatives (implies (and (>= x1 x2) (>= y1 y2) (>= x2 0) (>= y2 0) (fc (real/rationalp x1)) (fc (real/rationalp x2)) (fc (real/rationalp y1)) (fc (real/rationalp y2))) (>= (* x1 y1) (* x2 y2))))
Theorem:
(defthm *-preserves->-for-nonnegatives-1 (implies (and (> x1 x2) (>= y1 y2) (>= x2 0) (> y2 0) (fc (real/rationalp x1)) (fc (real/rationalp x2)) (fc (real/rationalp y1)) (fc (real/rationalp y2))) (> (* x1 y1) (* x2 y2))))
Theorem:
(defthm x*y>1-positive-lemma (implies (and (> x i) (> y j) (real/rationalp i) (real/rationalp j) (< 0 i) (< 0 j) (fc (real/rationalp x)) (fc (real/rationalp y))) (> (* x y) (* i j))))
Theorem:
(defthm x*y>1-positive (implies (and (> x 1) (> y 1) (fc (real/rationalp x)) (fc (real/rationalp y))) (> (* x y) 1)) :rule-classes (:linear :rewrite))