other
(in-package "STD")
other
(include-book "deflist-base")
other
(include-book "std/osets/element-list" :dir :system)
other
(include-book "defsort/duplicated-members" :dir :system)
other
(include-book "std/lists/sets" :dir :system)
other
(include-book "std/lists/list-fix" :dir :system)
other
(include-book "std/lists/take" :dir :system)
other
(include-book "std/lists/repeat" :dir :system)
other
(include-book "std/lists/rev" :dir :system)
other
(local (progn (include-book "std/lists/nth" :dir :system) (include-book "std/lists/update-nth" :dir :system) (include-book "std/lists/butlast" :dir :system) (include-book "std/lists/nthcdr" :dir :system) (include-book "std/lists/append" :dir :system) (include-book "std/lists/last" :dir :system) (include-book "std/lists/rcons" :dir :system) (include-book "std/lists/remove" :dir :system) (include-book "std/lists/revappend" :dir :system) (include-book "defredundant")))
other
(make-event (let ((tab (table-alist 'listp-rules (w state)))) `(table listp-rules nil ',STD::TAB :clear)))
other
(make-event (defredundant-fn (strip-cars (table-alist 'listp-rules (w state))) nil state))
other
(defsection deflist-lemmas (local (include-book "std/osets/under-set-equiv" :dir :system)) (local (in-theory (enable* definitions expensive-rules))) (defthmd deflist-lemma-member-of-car (iff (member-equal (car x) x) (consp x))) (defthmd deflist-lemma-subsetp-of-set-difference-equal (subsetp-equal (set-difference-equal x y) x)) (defthmd deflist-lemma-subsetp-of-intersection-equal (and (subsetp-equal (intersection-equal x y) x) (subsetp-equal (intersection-equal x y) y))) (defthmd deflist-lemma-subsetp-equal-of-duplicated-members (subsetp-equal (duplicated-members x) x) :hints (("Goal" :in-theory (enable duplicity))) :otf-flg t) (defthmd deflist-lemma-subsetp-of-nthcdr (subsetp-equal (nthcdr n x) x)) (defthmd deflist-lemma-true-listp-of-nthcdr (equal (true-listp (nthcdr n x)) (or (< (len x) (nfix n)) (true-listp x))) :hints (("Goal" :induct (nthcdr n x)))) (defthmd deflist-lemma-subsetp-of-last (subsetp-equal (last x) x)) (defthmd deflist-lemma-true-listp-of-last (equal (true-listp (last x)) (true-listp x))) (local (include-book "arithmetic/top-with-meta" :dir :system)) (local (defthmd c0 (equal (< (+ a b) (+ a c)) (< b c)))) (defthmd deflist-lemma-cancel-negative-constant (implies (syntaxp (and (quotep a) (< (unquote a) 0))) (equal (< (+ a b) c) (< b (+ (- a) c)))) :hints (("Goal" :use ((:instance c0 (a (- a)) (b (+ a b)) (c c)))))) (defthmd deflist-lemma-len-over-zero (equal (< 0 (len x)) (consp x))) (defthmd deflist-lemma-nth-when-zp (implies (zp n) (equal (nth n x) (car x)))) (defthmd deflist-lemma-nth-when-atom (implies (atom x) (equal (nth n x) nil))) (defthmd deflist-lemma-nth-of-cons (equal (nth n (cons a x)) (if (zp n) a (nth (+ -1 n) x)))) (local (defthm l0 (implies (and (member a (take n x)) (<= (nfix n) (len x))) (member a x)) :hints (("Goal" :in-theory (enable take))))) (local (defthm l1 (implies (<= (nfix n) (len x)) (subsetp-equal (take n x) x)) :hints (("Goal" :in-theory (enable take))))) (defthmd deflist-lemma-subsetp-of-butlast (subsetp-equal (butlast x n) x)) (defthmd deflist-lemma-true-listp-of-butlast (true-listp (butlast x n)) :rule-classes :type-prescription) (defthmd deflist-lemma-sfix-when-not-setp (implies (not (setp x)) (equal (sfix x) nil)) :hints (("Goal" :in-theory (enable sfix emptyp)))) (defthmd deflist-lemma-sfix-when-setp (implies (setp x) (equal (sfix x) x)) :hints (("Goal" :in-theory (enable sfix emptyp)))) (defthmd deflist-lemma-subsetp-of-difference (subsetp-equal (difference x y) x)) (local (defthm g1 (implies (member a (sfix x)) (member a x)) :hints (("Goal" :do-not-induct t :use ((:instance in-to-member (a a) (x (sfix x)))))))) (defthmd deflist-lemma-subsetp-of-intersect (and (subsetp-equal (intersect x y) x) (subsetp-equal (intersect x y) y)) :hints (("Goal" :do-not-induct t))) (defthmd deflist-lemma-true-listp-of-sfix (true-listp (sfix x)) :rule-classes :type-prescription) (defthmd deflist-lemma-subsetp-of-union (and (subsetp-equal (sfix x) (union x y)) (subsetp-equal (sfix y) (union x y)) (subsetp-equal (union x y) (append (sfix x) (sfix y))))))
other
(deftheory deflist-support-lemmas '((:type-prescription intersection-equal) (:type-prescription set-difference-equal) (:type-prescription duplicated-members) (:t list-fix) (:type-prescription rev) (:type-prescription len) deflist-lemma-member-of-car deflist-lemma-subsetp-of-set-difference-equal deflist-lemma-subsetp-of-intersection-equal deflist-lemma-subsetp-equal-of-duplicated-members deflist-lemma-cancel-negative-constant deflist-lemma-len-over-zero deflist-lemma-nth-when-zp deflist-lemma-nth-when-atom deflist-lemma-nth-of-cons deflist-lemma-sfix-when-not-setp deflist-lemma-sfix-when-setp deflist-lemma-subsetp-of-nthcdr deflist-lemma-subsetp-of-last deflist-lemma-subsetp-of-butlast deflist-lemma-true-listp-of-last deflist-lemma-true-listp-of-butlast deflist-lemma-true-listp-of-nthcdr deflist-lemma-subsetp-of-difference deflist-lemma-subsetp-of-intersect deflist-lemma-true-listp-of-sfix deflist-lemma-subsetp-of-union car-cons cdr-cons car-cdr-elim zp len natp nth update-nth nfix default-+-2 default-<-1 default-unary-minus unicity-of-0 take list-fix-when-not-consp list-fix-when-true-listp list-fix-of-cons sets-are-true-lists mergesort-set union-set intersect-set difference-set set-equiv-implies-equal-subsetp-1 set-equiv-implies-equal-subsetp-2 subsetp-refl list-fix-under-list-equiv mergesort-under-set-equiv binary-append-without-guard))