Filtering...

set-defthms

books/data-structures/set-defthms

Included Books

other
(in-package "ACL2")
include-book
(include-book "set-defuns")
subsetp-equal-constheorem
(defthm subsetp-equal-cons
  (implies (subsetp-equal a b) (subsetp-equal a (cons x b))))
subsetp-equal-reflexivetheorem
(defthm subsetp-equal-reflexive (subsetp-equal l l))
subsetp-equal-transitivetheorem
(defthm subsetp-equal-transitive
  (implies (and (subsetp-equal a b) (subsetp-equal b c))
    (subsetp-equal a c))
  :rule-classes nil)
subsetp-equal-append-crocktheorem
(defthm subsetp-equal-append-crock
  (implies (subsetp-equal l1 l2)
    (subsetp-equal (append l1 (list x)) (cons x l2))))
subsetp-equal-append2theorem
(defthm subsetp-equal-append2
  (implies (subsetp-equal l1 l2)
    (subsetp-equal l1 (append l2 l3))))
subsetp-equal-adjoin-equal1theorem
(defthm subsetp-equal-adjoin-equal1
  (equal (subsetp-equal (adjoin-equal x a) b)
    (and (memberp-equal x b) (subsetp-equal a b))))
subsetp-equal-adjoin-equal2theorem
(defthm subsetp-equal-adjoin-equal2
  (implies (subsetp-equal a b)
    (subsetp-equal a (adjoin-equal x b))))
subsetp-equal-intersection-equaltheorem
(defthm subsetp-equal-intersection-equal
  (implies (and (subsetp-equal a b) (subsetp-equal a c))
    (subsetp-equal a (intersection-equal b c))))
subsetp-equal-set-difference-equaltheorem
(defthm subsetp-equal-set-difference-equal
  (implies (and (subsetp-equal a b)
      (equal (intersection-equal a c) nil))
    (subsetp-equal a (set-difference-equal b c))))
subsetp-equal-union-equaltheorem
(defthm subsetp-equal-union-equal
  (implies (or (subsetp-equal a b) (subsetp-equal a c))
    (subsetp-equal a (union-equal b c))))
set-equal-reflexivetheorem
(defthm set-equal-reflexive
  (set-equal l l)
  :hints (("Goal" :do-not-induct t)))
set-equal-symmetrictheorem
(defthm set-equal-symmetric
  (implies (set-equal a b) (set-equal b a))
  :rule-classes nil)
set-equal-transitivetheorem
(defthm set-equal-transitive
  (implies (and (set-equal a b) (set-equal b c))
    (set-equal a c))
  :rule-classes nil
  :hints (("Goal" :do-not-induct t
     :use ((:instance subsetp-equal-transitive (a a) (b b) (c c)) (:instance subsetp-equal-transitive (a c) (b b) (c a))))))
memberp-equal-subsetp-equaltheorem
(defthm memberp-equal-subsetp-equal
  (implies (and (memberp-equal x a) (subsetp-equal a b))
    (memberp-equal x b))
  :rule-classes nil)
memberp-equal-set-equaltheorem
(defthm memberp-equal-set-equal
  (implies (set-equal a b)
    (iff (memberp-equal x a) (memberp-equal x b)))
  :rule-classes nil
  :hints (("Goal" :do-not-induct t
     :use ((:instance memberp-equal-subsetp-equal (x x) (a a) (b b)) (:instance memberp-equal-subsetp-equal (x x) (a b) (b a))))))
memberp-equal-adjoin-equaltheorem
(defthm memberp-equal-adjoin-equal
  (iff (memberp-equal x (adjoin-equal y l))
    (or (equal x y) (memberp-equal x l))))
memberp-equal-intersection-equaltheorem
(defthm memberp-equal-intersection-equal
  (iff (memberp-equal x (intersection-equal a b))
    (and (memberp-equal x a) (memberp-equal x b))))
memberp-equal-set-difference-equaltheorem
(defthm memberp-equal-set-difference-equal
  (iff (memberp-equal x (set-difference-equal a b))
    (and (memberp-equal x a) (not (memberp-equal x b)))))
memberp-equal-union-equaltheorem
(defthm memberp-equal-union-equal
  (iff (memberp-equal x (union-equal a b))
    (or (memberp-equal x a) (memberp-equal x b))))
setp-equal-constheorem
(defthm setp-equal-cons
  (equal (setp-equal (cons x l))
    (and (setp-equal l) (not (memberp-equal x l))))
  :hints (("Goal" :in-theory (enable setp-equal))))
setp-equal-adjoin-equaltheorem
(defthm setp-equal-adjoin-equal
  (implies (setp-equal a) (setp-equal (adjoin-equal x a))))
local
(local (defthm member-equal-intersection-equal
    (iff (member-equal x (intersection-equal a b))
      (and (member-equal x a) (member-equal x b)))))
setp-equal-intersection-equaltheorem
(defthm setp-equal-intersection-equal
  (implies (setp-equal a)
    (setp-equal (intersection-equal a b))))
local
(local (defthm member-equal-set-difference-equal
    (iff (member-equal x (set-difference-equal a b))
      (and (member-equal x a) (not (member-equal x b))))))
setp-equal-set-difference-equaltheorem
(defthm setp-equal-set-difference-equal
  (implies (setp-equal a)
    (setp-equal (set-difference-equal a b))))
local
(local (defthm member-equal-union-equal
    (iff (member-equal x (union-equal a b))
      (or (member-equal x a) (member-equal x b)))))
setp-equal-union-equaltheorem
(defthm setp-equal-union-equal
  (implies (and (setp-equal a) (setp-equal b))
    (setp-equal (union-equal a b))))
intersection-equal-niltheorem
(defthm intersection-equal-nil
  (equal (intersection-equal a nil) nil))
subsetp-equal-intersection-equal-instancetheorem
(defthm subsetp-equal-intersection-equal-instance
  (implies (and (true-listp a) (subsetp-equal a b))
    (equal (intersection-equal a b) a)))
intersection-equal-identitytheorem
(defthm intersection-equal-identity
  (implies (true-listp a) (equal (intersection-equal a a) a))
  :hints (("Goal" :do-not-induct t)))
union-equal-niltheorem
(defthm union-equal-nil
  (implies (true-listp a) (equal (union-equal a nil) a)))
subsetp-equal-union-equal-instancetheorem
(defthm subsetp-equal-union-equal-instance
  (implies (and (true-listp b) (subsetp-equal a b))
    (equal (union-equal a b) b)))
union-equal-identitytheorem
(defthm union-equal-identity
  (implies (true-listp a) (equal (union-equal a a) a))
  :hints (("Goal" :do-not-induct t)))
set-difference-equal-niltheorem
(defthm set-difference-equal-nil
  (implies (true-listp a)
    (equal (set-difference-equal a nil) a)))
subsetp-equal-set-difference-equal-instancetheorem
(defthm subsetp-equal-set-difference-equal-instance
  (implies (and (true-listp b) (subsetp-equal a b))
    (equal (set-difference-equal a b) nil)))
set-difference-equal-identitytheorem
(defthm set-difference-equal-identity
  (implies (true-listp a)
    (equal (set-difference-equal a a) nil))
  :hints (("Goal" :do-not-induct t)))
set-difference-equal-constheorem
(defthm set-difference-equal-cons
  (implies (member-equal x b)
    (equal (set-difference-equal a (cons x b))
      (set-difference-equal a b))))
set-difference-null-intersectiontheorem
(defthm set-difference-null-intersection
  (implies (and (true-listp a) (equal (intersection-equal a b) nil))
    (equal (set-difference-equal a b) a)))
local
(local (defthm member-equal-append
    (iff (member-equal x (append a b))
      (or (member-equal x a) (member-equal x b)))))
no-duplicatesp-equal-appendtheorem
(defthm no-duplicatesp-equal-append
  (iff (no-duplicatesp-equal (append a b))
    (and (no-duplicatesp-equal a)
      (no-duplicatesp-equal b)
      (not (intersection-equal a b)))))
local
(local (defthm true-listp-append-rewrite
    (equal (true-listp (append a b)) (true-listp b))))
setp-equal-appendtheorem
(defthm setp-equal-append
  (implies (true-listp a)
    (iff (setp-equal (append a b))
      (and (setp-equal a)
        (setp-equal b)
        (not (intersection-equal a b)))))
  :hints (("Goal" :do-not-induct t)))
in-theory
(in-theory (disable set-equal setp-equal adjoin-equal memberp-equal))