Included Books
other
(in-package "ACL2")
include-book
(include-book "acl2s/defdata/records" :dir :system)
records-lemma-acl2-counttheorem
(defthm records-lemma-acl2-count (<= (acl2-count (mget k r)) (acl2-count r)) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes :linear)
non-empty-good-mapfunction
(defun non-empty-good-map (x) (declare (xargs :guard t)) (and (consp x) (recordp x)))
records-acl2-count-linear-arith-<theorem
(defthm records-acl2-count-linear-arith-< (implies (mget k r) (< (acl2-count (mget k r)) (acl2-count r))) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes :linear)
records-acl2-counttheorem
(defthm records-acl2-count (implies (consp r) (< (acl2-count (mget k r)) (acl2-count r))) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes :linear)
map-identity2function
(defun map-identity2 (a x) "for map elim rule -- dummy destructor" (declare (ignore a)) x)
map-elim-ruletheorem
(defthmd map-elim-rule (implies (recordp r) (equal (mset k (mget k r) (map-identity2 k r)) r)) :rule-classes :elim)
list-identity2function
(defun list-identity2 (a x) "for list elim rule -- dummy destructor" (declare (ignore a)) x)
list-elim-ruletheorem
(defthmd list-elim-rule (implies (and (true-listp x) (natp i) (< i (len x))) (equal (update-nth i (nth i x) (list-identity2 i x)) x)) :hints (("Goal" :in-theory (e/d (update-nth len nth) (true-listp (tau-system))))) :rule-classes :elim)
put-assoc-equal-elim-rule-versionfunction
(defun put-assoc-equal-elim-rule-version (e x) "put entry e=(key . value) in its rightful place in alist x" (put-assoc-equal (car e) (cdr e) x))
alist-identity2function
(defun alist-identity2 (a x) "for alist elim rule -- dummy destructor" (declare (ignore a)) x)
assoc-eq-answer-cartheorem
(defthm assoc-eq-answer-car (implies (assoc-equal k x) (equal (car (assoc-equal k x)) k)))
alist-elim-ruletheorem
(defthmd alist-elim-rule (implies (and (alistp x) (assoc-equal k x)) (equal (put-assoc-equal-elim-rule-version (assoc-equal k x) (alist-identity2 k x)) x)) :rule-classes :elim)
mset-aux-consptheorem
(defthm mset-aux-consp (implies v (consp (mset a v r))) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes ((:forward-chaining :trigger-terms ((mset a v r))) (:rewrite :backchain-limit-lst 1)))
s-nil-no-optheorem
(defthm s-nil-no-op (implies (and (force (recordp r)) (not (mget a r))) (equal (mset a nil r) r)) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes ((:forward-chaining :trigger-terms ((mset a nil r))) (:rewrite :backchain-limit-lst 1)))
field-not-empty-implies-record-not-empty1theorem
(defthm field-not-empty-implies-record-not-empty1 (implies (mget a r) (consp r)) :hints (("goal" :in-theory (enable minimal-records-theory))) :rule-classes ((:forward-chaining) (:rewrite :backchain-limit-lst 0)))
s-diff-entry-non-empty-good-map-is-consp2theorem
(defthmd s-diff-entry-non-empty-good-map-is-consp2 (implies (and (not (equal a b)) (mget a r)) (consp (mset b v r))) :hints (("goal" :in-theory (enable mset mget recordp no-nil-val-alistp ordered-unique-key-alistp))) :rule-classes ((:forward-chaining :trigger-terms ((mset b v r))) (:rewrite :backchain-limit-lst 1)))
s-diff-entry-non-empty-good-map-is-consp-tagtheorem
(defthmd s-diff-entry-non-empty-good-map-is-consp-tag (implies (and (not (equal *tag* b)) (mget *tag* r)) (consp (mset b v r))) :hints (("goal" :in-theory (enable mset mget recordp no-nil-val-alistp ordered-unique-key-alistp))) :rule-classes ((:forward-chaining :trigger-terms ((mset b v r))) (:rewrite :backchain-limit-lst 1)))
s-diff-entry-non-empty-good-map-is-non-niltheorem
(defthmd s-diff-entry-non-empty-good-map-is-non-nil (implies (and (mget a r) (not (equal a b))) (mset b v r)) :hints (("goal" :use ((:instance s-diff-entry-non-empty-good-map-is-consp2)))) :rule-classes ((:forward-chaining :trigger-terms ((mset b v r))) (:rewrite :backchain-limit-lst 1)))
s-diff-entry-tag-is-non-niltheorem
(defthmd s-diff-entry-tag-is-non-nil (implies (and (mget *tag* r) (not (equal b *tag*))) (mset b v r)) :rule-classes ((:forward-chaining :trigger-terms ((mset b v r))) (:rewrite :backchain-limit-lst 1)))