Filtering...

remove1-equal

books/kestrel/lists-light/remove1-equal

Included Books

len
other
(in-package "ACL2")
local
(local (include-book "len"))
in-theory
(in-theory (disable remove1-equal))
remove1-equal-of-niltheorem
(defthm remove1-equal-of-nil
  (equal (remove1-equal x nil) nil)
  :hints (("Goal" :in-theory (enable remove1-equal))))
remove1-equal-when-not-consptheorem
(defthmd remove1-equal-when-not-consp
  (implies (not (consp l)) (equal (remove1-equal x l) nil))
  :hints (("Goal" :in-theory (enable remove1-equal))))
remove1-equal-when-not-consp-cheaptheorem
(defthm remove1-equal-when-not-consp-cheap
  (implies (not (consp l)) (equal (remove1-equal x l) nil))
  :rule-classes ((:rewrite :backchain-limit-lst (0)))
  :hints (("Goal" :in-theory (enable remove1-equal))))
consp-of-remove1-equaltheorem
(defthm consp-of-remove1-equal
  (equal (consp (remove1-equal x l))
    (and (consp l)
      (not (and (equal 1 (len l)) (equal x (car l))))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
remove1-equal-of-constheorem
(defthm remove1-equal-of-cons
  (equal (remove1-equal x (cons y l))
    (if (equal x y)
      l
      (cons y (remove1-equal x l))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
remove1-equal-of-car-sametheorem
(defthm remove1-equal-of-car-same
  (equal (remove1-equal (car l) l) (cdr l))
  :hints (("Goal" :in-theory (enable remove1-equal))))
len-of-remove1-equal-lineartheorem
(defthm len-of-remove1-equal-linear
  (<= (len (remove1-equal x l)) (len l))
  :rule-classes ((:linear :trigger-terms ((len (remove1-equal x l)))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
len-of-remove1-equal-linear-2theorem
(defthm len-of-remove1-equal-linear-2
  (<= (+ -1 (len l)) (len (remove1-equal x l)))
  :rule-classes ((:linear :trigger-terms ((len (remove1-equal x l)))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
len-of-remove1-equaltheorem
(defthm len-of-remove1-equal
  (equal (len (remove1-equal x l))
    (if (member-equal x l)
      (+ -1 (len l))
      (len l)))
  :hints (("Goal" :in-theory (enable remove1-equal))))
true-listp-of-remove1-equaltheorem
(defthm true-listp-of-remove1-equal
  (implies (true-listp l) (true-listp (remove1-equal x l))))
true-list-fix-of-remove1-equaltheorem
(defthm true-list-fix-of-remove1-equal
  (equal (true-list-fix (remove1-equal x l))
    (remove1-equal x (true-list-fix l))))
remove1-equal-of-appendtheorem
(defthm remove1-equal-of-append
  (equal (remove1-equal x (append l1 l2))
    (if (member-equal x l1)
      (append (remove1-equal x l1) l2)
      (append l1 (remove1-equal x l2)))))
not-member-equal-of-remove1-equaltheorem
(defthm not-member-equal-of-remove1-equal
  (implies (not (member-equal x l))
    (not (member-equal x (remove1-equal y l))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
member-equal-of-remove1-equal-when-not-equal-ifftheorem
(defthm member-equal-of-remove1-equal-when-not-equal-iff
  (implies (not (equal a b))
    (iff (member-equal a (remove1-equal b x))
      (member-equal a x))))
no-duplicatesp-equal-of-remove1-equaltheorem
(defthm no-duplicatesp-equal-of-remove1-equal
  (implies (no-duplicatesp-equal l)
    (no-duplicatesp-equal (remove1-equal x l)))
  :hints (("Goal" :in-theory (enable no-duplicatesp-equal remove1-equal))))
remove1-equal-of-remove1-equaltheorem
(defthm remove1-equal-of-remove1-equal
  (equal (remove1-equal x (remove1-equal y l))
    (remove1-equal y (remove1-equal x l)))
  :hints (("Goal" :in-theory (enable remove1-equal))))
remove1-equal-when-not-member-equaltheorem
(defthm remove1-equal-when-not-member-equal
  (implies (not (member-equal x l))
    (equal (remove1-equal x l) (true-list-fix l))))
<-of-acl2-count-of-remove1-equal-lineartheorem
(defthm <-of-acl2-count-of-remove1-equal-linear
  (implies (member-equal a x)
    (< (acl2-count (remove1-equal a x)) (acl2-count x)))
  :rule-classes ((:linear :trigger-terms ((acl2-count (remove1-equal a x)))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
<=-of-acl2-count-of-remove1-equal-lineartheorem
(defthm <=-of-acl2-count-of-remove1-equal-linear
  (<= (acl2-count (remove1-equal a x)) (acl2-count x))
  :rule-classes ((:linear :trigger-terms ((acl2-count (remove1-equal a x)))))
  :hints (("Goal" :in-theory (enable remove1-equal))))
equal-of-acl2-count-of-remove1-equal-and-acl2-counttheorem
(defthm equal-of-acl2-count-of-remove1-equal-and-acl2-count
  (equal (equal (acl2-count (remove1-equal a x)) (acl2-count x))
    (if (member-equal a x)
      nil
      (equal (acl2-count (true-list-fix x)) (acl2-count x))))
  :hints (("Goal" :use (:instance <-of-acl2-count-of-remove1-equal-linear)
     :in-theory (disable <-of-acl2-count-of-remove1-equal-linear))))