Included Books
other
(in-package "ACL2")
local
(local (include-book "../../support/top"))
rational-implies2theorem
(defthm rational-implies2 (implies (rationalp x) (equal (* (/ (denominator x)) (numerator x)) x)))
numerator-zerotheorem
(defthm numerator-zero (implies (rationalp x) (equal (equal (numerator x) 0) (equal x 0))) :rule-classes ((:rewrite) (:type-prescription :corollary (implies (equal x 0) (equal (numerator x) 0)))))
numerator-positivetheorem
(defthm numerator-positive (implies (rationalp x) (equal (< 0 (numerator x)) (< 0 x))) :rule-classes ((:rewrite) (:type-prescription :corollary (implies (and (rationalp x) (< 0 x)) (and (integerp (numerator x)) (< 0 (numerator x))))) (:type-prescription :corollary (implies (and (rationalp x) (<= 0 x)) (and (integerp (numerator x)) (<= 0 (numerator x)))))))
numerator-negativetheorem
(defthm numerator-negative (implies (rationalp x) (equal (< (numerator x) 0) (< x 0))) :rule-classes ((:rewrite) (:type-prescription :corollary (implies (and (rationalp x) (< x 0)) (and (integerp (numerator x)) (< (numerator x) 0)))) (:type-prescription :corollary (implies (and (rationalp x) (<= x 0)) (and (integerp (numerator x)) (<= (numerator x) 0))))))
numerator-minustheorem
(defthm numerator-minus (equal (numerator (- i)) (- (numerator i))))
denominator-minustheorem
(defthm denominator-minus (implies (rationalp x) (equal (denominator (- x)) (denominator x))))
integerp==>numerator-=-xtheorem
(defthm integerp==>numerator-=-x (implies (integerp x) (equal (numerator x) x)))
integerp==>denominator-=-1theorem
(defthm integerp==>denominator-=-1 (implies (integerp x) (equal (denominator x) 1)))
equal-denominator-1theorem
(defthm equal-denominator-1 (equal (equal (denominator x) 1) (or (integerp x) (not (rationalp x)))))
|(* r (denominator r))|theorem
(defthm |(* r (denominator r))| (implies (rationalp r) (equal (* r (denominator r)) (numerator r))))
/r-when-abs-numerator=1theorem
(defthm /r-when-abs-numerator=1 (and (implies (equal (numerator r) 1) (equal (/ r) (denominator r))) (implies (equal (numerator r) -1) (equal (/ r) (- (denominator r))))) :hints (("Goal" :use ((:instance rational-implies2 (x r))) :in-theory (disable rational-implies2))))
in-theory
(in-theory (disable /r-when-abs-numerator=1))
|(equal (/ r) (denominator r))|theorem
(defthm |(equal (/ r) (denominator r))| (implies (rationalp r) (equal (equal (/ r) (denominator r)) (equal (numerator r) 1))))
|(equal (/ r) (- (denominator r)))|theorem
(defthm |(equal (/ r) (- (denominator r)))| (implies (rationalp r) (equal (equal (/ r) (- (denominator r))) (equal (numerator r) -1))))
numerator-goes-down-by-integer-division-lineartheorem
(defthm numerator-goes-down-by-integer-division-linear (implies (and (integerp x) (< 0 x) (rationalp r)) (<= (abs (numerator (* (/ x) r))) (abs (numerator r)))) :hints (("Goal" :use numerator-goes-down-by-integer-division-pass1)) :rule-classes ((:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (<= 0 r)) (<= (numerator (* (/ x) r)) (numerator r)))) (:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (<= 0 r)) (<= (numerator (* r (/ x))) (numerator r)))) (:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (<= r 0)) (<= (numerator r) (numerator (* (/ x) r))))) (:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (<= r 0)) (<= (numerator r) (numerator (* r (/ x))))))))
denominator-boundtheorem
(defthm denominator-bound (implies (and (integerp x) (integerp y) (< 0 y)) (<= (denominator (* x (/ y))) y)) :rule-classes ((:linear :corollary (implies (and (integerp x) (integerp y) (< 0 y)) (<= (denominator (* x (/ y))) y))) (:linear :corollary (implies (and (integerp x) (integerp y) (< 0 y)) (<= (denominator (* (/ y) x)) y)))))