Filtering...

alen1

books/kestrel/acl2-arrays/alen1
other
(in-package "ACL2")
local
(local (defthm equal-of-assoc-equal-same
    (implies key
      (iff (equal key (car (assoc-equal key array)))
        (assoc-equal key array)))
    :hints (("Goal" :in-theory (enable assoc-equal)))))
alen1function
(defund alen1
  (name l)
  (declare (xargs :guard (array1p name l)))
  (car (dimensions name l)))
normalize-alen1-nametheorem
(defthmd normalize-alen1-name
  (implies (syntaxp (not (equal name '':fake-name)))
    (equal (alen1 name l) (alen1 :fake-name l)))
  :hints (("Goal" :in-theory (enable alen1))))
alen1-introtheorem
(defthm alen1-intro
  (equal (car (dimensions array-name array))
    (alen1 array-name array))
  :hints (("Goal" :in-theory (enable alen1))))
other
(theory-invariant (incompatible (:rewrite alen1-intro) (:definition alen1)))
alen1-intro2theorem
(defthm alen1-intro2
  (equal (nth 0 (dimensions array-name array))
    (alen1 array-name array))
  :hints (("Goal" :in-theory (e/d (alen1) (alen1-intro)))))
other
(theory-invariant (incompatible (:rewrite alen1-intro2) (:definition alen1)))
alen1-of-compress1theorem
(defthm alen1-of-compress1
  (equal (alen1 array-name (compress1 array-name2 array))
    (alen1 array-name array))
  :hints (("Goal" :in-theory (e/d (alen1) (alen1-intro alen1-intro2)))))
integerp-of-alen1-gentheorem
(defthm integerp-of-alen1-gen
  (implies (array1p array-name2 array)
    (integerp (alen1 array-name array)))
  :hints (("Goal" :in-theory (e/d (alen1) (alen1-intro alen1-intro2)))))
integerp-of-alen1theorem
(defthm integerp-of-alen1
  (implies (array1p array-name array)
    (integerp (alen1 array-name array)))
  :hints (("Goal" :in-theory (disable array1p))))
posp-of-alen1theorem
(defthm posp-of-alen1
  (implies (array1p array-name2 array)
    (posp (alen1 array-name array)))
  :rule-classes (:rewrite :type-prescription)
  :hints (("Goal" :in-theory (e/d (alen1 array1p) (alen1-intro alen1-intro2)))))
alen1-of-constheorem
(defthm alen1-of-cons
  (equal (alen1 array-name (cons entry alist))
    (if (eq :header (car entry))
      (car (cadr (assoc-keyword :dimensions (cdr entry))))
      (alen1 array-name alist)))
  :hints (("Goal" :in-theory (e/d (alen1) (alen1-intro alen1-intro2)))))
alen1-of-acons-of-headertheorem
(defthm alen1-of-acons-of-header
  (equal (alen1 array-name (acons :header header alist))
    (car (cadr (assoc-keyword :dimensions header))))
  :hints (("Goal" :in-theory (enable acons))))
rationalp-of-alen1-when-array1ptheorem
(defthm rationalp-of-alen1-when-array1p
  (implies (array1p array-name array)
    (rationalp (alen1 array-name array)))
  :hints (("Goal" :use integerp-of-alen1
     :in-theory (disable integerp-of-alen1))))