Filtering...

rationals

books/arithmetic/rationals

Included Books

other
(in-package "ACL2")
include-book
(include-book "inequalities")
local
(local (include-book "mod-gcd"))
other
(defsection more-rational-identities
  :parents (arithmetic-1 numerator denominator)
  :short "Rules about @(see numerator) and @(see denominator) in the
@('arithmetic/rationals') book."
  (defthm denominator-unary-minus
    (implies (rationalp x)
      (equal (denominator (- x)) (denominator x)))
    :hints (("Goal" :use (:instance unique-rationalp
         (d (denominator x))
         (n (- (numerator x)))))))
  (defthm numerator-goes-down-by-integer-division
    (implies (and (integerp x) (< 0 x) (rationalp r))
      (<= (abs (numerator (* (/ x) r))) (abs (numerator r))))
    :rule-classes ((:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (>= r 0))
         (<= (numerator (* (/ x) r)) (numerator r)))) (:linear :corollary (implies (and (integerp x) (< 0 x) (rationalp r) (<= r 0))
          (<= (numerator r) (numerator (* (/ x) r))))))
    :hints (("Goal" :use (:instance least-numerator-denominator-<=
         (n (numerator r))
         (d (* x (denominator r)))))))
  (defthm denominator-plus
    (implies (and (rationalp r) (integerp i))
      (equal (denominator (+ i r)) (denominator r)))
    :hints (("Goal" :use ((:instance unique-rationalp
          (d (denominator r))
          (n (+ (numerator r) (* i (denominator r))))) (:instance nonneg-int-gcd-abs
           (x (numerator r))
           (j i)
           (n (denominator r)))))))
  (defthm numerator-minus
    (equal (numerator (- i)) (- (numerator i)))
    :hints (("Goal" :cases ((rationalp i))) ("Subgoal 1" :use (:instance unique-rationalp
          (d (denominator i))
          (n (- (numerator i)))))))
  (defthm numerator-/x
    (implies (and (integerp x) (not (equal x 0)))
      (equal (numerator (/ x)) (signum x)))
    :hints (("Goal" :use (:instance unique-rationalp (n (signum x)) (d (abs x)))))))