Filtering...

acl2-count

books/kestrel/utilities/acl2-count
other
(in-package "ACL2")
<=-of-acl2-count-of-car-and-acl2-count-sametheorem
(defthm <=-of-acl2-count-of-car-and-acl2-count-same
  (<= (acl2-count (car x)) (acl2-count x)))
<=-of-acl2-count-of-car-and-acl2-count-same-lineartheorem
(defthm <=-of-acl2-count-of-car-and-acl2-count-same-linear
  (<= (acl2-count (car x)) (acl2-count x))
  :rule-classes ((:linear :trigger-terms ((acl2-count (car x))))))
<=-of-acl2-count-of-cdr-and-acl2-count-sametheorem
(defthm <=-of-acl2-count-of-cdr-and-acl2-count-same
  (<= (acl2-count (cdr x)) (acl2-count x)))
<=-of-acl2-count-of-cdr-and-acl2-count-same-lineartheorem
(defthm <=-of-acl2-count-of-cdr-and-acl2-count-same-linear
  (<= (acl2-count (cdr x)) (acl2-count x))
  :rule-classes ((:linear :trigger-terms ((acl2-count (cdr x))))))
acl2-count-car-chainingtheorem
(defthm acl2-count-car-chaining
  (implies (<= (acl2-count y) (acl2-count x))
    (<= (acl2-count (car y)) (acl2-count x)))
  :hints (("Goal" :in-theory (disable acl2-count))))
acl2-count-cdr-chainingtheorem
(defthm acl2-count-cdr-chaining
  (implies (<= (acl2-count y) (acl2-count x))
    (<= (acl2-count (cdr y)) (acl2-count x)))
  :hints (("Goal" :in-theory (disable acl2-count))))
<-of-0-and-acl2-count-when-consp-lineartheorem
(defthmd <-of-0-and-acl2-count-when-consp-linear
  (implies (consp x) (< 0 (acl2-count x)))
  :rule-classes :linear :hints (("Goal" :in-theory (enable acl2-count))))
acl2-count-of-constheorem
(defthm acl2-count-of-cons
  (equal (acl2-count (cons x y))
    (+ 1 (acl2-count x) (acl2-count y))))
<=-of-acl2-count-of-nthcdrtheorem
(defthmd <=-of-acl2-count-of-nthcdr
  (<= (acl2-count (nthcdr n lst)) (acl2-count lst))
  :hints (("Goal" :induct (nthcdr n lst) :in-theory (enable nthcdr))))
<=-of-acl2-count-of-nthcdr-lineartheorem
(defthm <=-of-acl2-count-of-nthcdr-linear
  (<= (acl2-count (nthcdr n lst)) (acl2-count lst))
  :rule-classes ((:linear :trigger-terms ((acl2-count (nthcdr n lst)))))
  :hints (("Goal" :by <=-of-acl2-count-of-nthcdr)))
<-of-acl2-count-of-nthcdrtheorem
(defthm <-of-acl2-count-of-nthcdr
  (implies (consp lst)
    (equal (< (acl2-count (nthcdr n lst)) (acl2-count lst))
      (and (< 0 n) (integerp n))))
  :hints (("Goal" :induct (nthcdr n lst) :in-theory (enable nthcdr)) ("subgoal *1/1" :cases ((< 0 n)))
    ("subgoal *1/2" :cases ((< 0 n)))))
<-of-acl2-count-of-nthcdr-lineartheorem
(defthm <-of-acl2-count-of-nthcdr-linear
  (implies (and (posp n) (consp lst))
    (< (acl2-count (nthcdr n lst)) (acl2-count lst)))
  :rule-classes ((:linear :trigger-terms ((acl2-count (nthcdr n lst))))))
<=-of-acl2-count-of-nththeorem
(defthm <=-of-acl2-count-of-nth
  (<= (acl2-count (nth n lst)) (acl2-count lst))
  :rule-classes (:rewrite (:linear :trigger-terms ((acl2-count (nth n lst)))))
  :hints (("Goal" :induct (nth n lst) :in-theory (enable nth))))
<-of-acl2-count-of-one-lesstheorem
(defthm <-of-acl2-count-of-one-less
  (implies (posp x) (< (acl2-count (+ -1 x)) (acl2-count x)))
  :hints (("Goal" :in-theory (enable acl2-count))))
acl2-count-hacktheorem
(defthmd acl2-count-hack
  (implies (<= (acl2-count x) y) (< (acl2-count x) (+ 1 y))))