Filtering...

library-support

books/acl2s/defdata/library-support

Included Books

other
(in-package "ACL2")
include-book
(include-book "acl2s/defdata/records" :dir :system)
*tag*constant
(defconst *tag* :0tag)
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)
good-mapfunction
(defun good-map (x) (recordp x))
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)))
non-empty-record-consptheorem
(defthm non-empty-record-consp
  (implies (and (recordp r) r) (consp r))
  :hints (("goal" :in-theory (enable recordp)))
  :rule-classes ((:forward-chaining)))
non-empty-record-consp-cartheorem
(defthm non-empty-record-consp-car
  (implies (and (recordp r) (car r)) (consp (car r)))
  :hints (("goal" :in-theory (enable recordp)))
  :rule-classes ((:forward-chaining)))