Trivial normalization and cancellation rules for products.
Theorem:
(defthm commutativity-2-of-* (equal (* x (* y z)) (* y (* x z))))
Theorem:
(defthm functional-self-inversion-of-/ (equal (/ (/ x)) (fix x)))
Theorem:
(defthm distributivity-of-/-over-* (equal (/ (* x y)) (* (/ x) (/ y))))
Theorem:
(defthm /-cancellation-on-right (implies (and (fc (acl2-numberp x)) (fc (not (equal x 0)))) (equal (* x y (/ x)) (fix y))))
Theorem:
(defthm /-cancellation-on-left (implies (and (fc (acl2-numberp x)) (fc (not (equal 0 x)))) (equal (* x (/ x) y) (fix y))))
Theorem:
(defthm right-cancellation-for-* (equal (equal (* x z) (* y z)) (or (equal 0 (fix z)) (equal (fix x) (fix y)))))
Theorem:
(defthm left-cancellation-for-* (equal (equal (* z x) (* z y)) (or (equal 0 (fix z)) (equal (fix x) (fix y)))))
Theorem:
(defthm zero-is-only-zero-divisor (equal (equal (* x y) 0) (or (equal (fix x) 0) (equal (fix y) 0))))
Theorem:
(defthm equal-*-x-y-x (equal (equal (* x y) x) (or (equal x 0) (and (equal y 1) (acl2-numberp x)))))
Theorem:
(defthm equal-*-x-y-y (equal (equal (* x y) y) (or (equal y 0) (and (equal x 1) (acl2-numberp y)))))
Theorem:
(defthm equal-/ (implies (and (fc (acl2-numberp x)) (fc (not (equal 0 x)))) (equal (equal (/ x) y) (equal 1 (* x y)))))
Theorem:
(defthm numerator-nonzero-forward (implies (not (equal (numerator r) 0)) (and (not (equal r 0)) (acl2-numberp r))) :rule-classes ((:forward-chaining :trigger-terms ((numerator r)))))
Theorem:
(defthm uniqueness-of-*-inverses (equal (equal (* x y) 1) (and (not (equal (fix x) 0)) (equal y (/ x)))))
Theorem:
(defthm equal-/-/ (equal (equal (/ a) (/ b)) (equal (fix a) (fix b))))
Theorem:
(defthm equal-*-/-1 (implies (and (acl2-numberp x) (not (equal x 0))) (equal (equal (* (/ x) y) z) (and (acl2-numberp z) (equal (fix y) (* x z))))))
Theorem:
(defthm equal-*-/-2 (implies (and (acl2-numberp x) (not (equal x 0))) (equal (equal (* y (/ x)) z) (and (acl2-numberp z) (equal (fix y) (* z x))))))
Theorem:
(defthm fold-consts-in-* (implies (and (syntaxp (quotep x)) (syntaxp (quotep y))) (equal (* x (* y z)) (* (* x y) z))))
Theorem:
(defthm times-zero (equal (* 0 x) 0))