Included Books
other
(in-package "ACL2")
include-book
(include-book "constants")
include-book
(include-book "alen1")
local
(local (include-book "dimensions"))
local
(local (include-book "bounded-integer-alistp"))
local
(local (include-book "maximum-length"))
local
(local (include-book "header"))
in-theory
(in-theory (disable array1p array1p-linear))
array1p-rewritetheorem
(defthmd array1p-rewrite (equal (array1p name l) (and (symbolp name) (alistp l) (let ((header-keyword-list (cdr (header name l)))) (and (keyword-value-listp header-keyword-list) (let* ((dimensions (dimensions name l)) (len (car dimensions)) (maximum-length (maximum-length name l))) (and (true-listp dimensions) (equal (len dimensions) 1) (integerp len) (integerp maximum-length) (< 0 len) (< len maximum-length) (<= maximum-length *max-array-maximum-length*) (bounded-integer-alistp l len))))))) :hints (("Goal" :in-theory (e/d (array1p header dimensions maximum-length) (dimensions-intro maximum-length-intro)))))
array1p-rewrite2theorem
(defthmd array1p-rewrite2 (equal (array1p name l) (and (symbolp name) (alistp l) (let ((header-keyword-list (cdr (header name l)))) (and (keyword-value-listp header-keyword-list) (let* ((dimensions (dimensions name l)) (len (alen1 name l)) (maximum-length (maximum-length name l))) (and (true-listp dimensions) (equal (len dimensions) 1) (integerp len) (integerp maximum-length) (< 0 len) (< len maximum-length) (<= maximum-length *max-array-maximum-length*) (bounded-integer-alistp l len))))))) :hints (("Goal" :in-theory (enable array1p-rewrite))))
normalize-array1p-nametheorem
(defthmd normalize-array1p-name (implies (syntaxp (not (equal name '':fake-name))) (equal (array1p name l) (and (symbolp name) (array1p :fake-name l)))) :hints (("Goal" :in-theory (enable array1p))))
array1p-of-cons-headertheorem
(defthmd array1p-of-cons-header (equal (array1p name2 (cons (list :header :dimensions (list dim) :maximum-length max :default nil :name name) alist)) (and (bounded-integer-alistp alist dim) (posp dim) (< dim max) (symbolp name2) (<= max *max-array-maximum-length*) (integerp max))) :hints (("Goal" :in-theory (enable array1p-rewrite))))
array1p-of-acons-headertheorem
(defthm array1p-of-acons-header (equal (array1p name2 (acons :header (list :dimensions (list dim) :maximum-length max :default nil :name name) alist)) (and (bounded-integer-alistp alist dim) (posp dim) (< dim max) (symbolp name2) (<= max *max-array-maximum-length*) (integerp max))) :hints (("Goal" :in-theory (enable array1p-rewrite))))
array1p-forward-to-<=-of-alen1theorem
(defthm array1p-forward-to-<=-of-alen1 (implies (array1p array-name array) (<= (alen1 array-name array) *max-1d-array-length*)) :rule-classes :forward-chaining :hints (("Goal" :in-theory (enable array1p-rewrite))))
array1p-forward-to-<=-of-alen1-2theorem
(defthm array1p-forward-to-<=-of-alen1-2 (implies (array1p array-name array) (<= 1 (alen1 array-name array))) :rule-classes :forward-chaining :hints (("Goal" :in-theory (enable array1p-rewrite))))
array1p-of-cons-of-header-and-niltheorem
(defthm array1p-of-cons-of-header-and-nil (equal (array1p array-name (list (list :header :dimensions dims :maximum-length maximum-length :default default :name array-name))) (and (symbolp array-name) (equal 1 (len dims)) (true-listp dims) (posp (car dims)) (natp maximum-length) (< (car dims) maximum-length) (<= maximum-length *max-array-maximum-length*))) :hints (("Goal" :in-theory (enable array1p-rewrite))))
assoc-equal-when-array1p-and-out-of-boundstheorem
(defthm assoc-equal-when-array1p-and-out-of-bounds (implies (and (<= (alen1 name array) n) (integerp n) (array1p name2 array)) (equal (assoc-equal n array) nil)) :hints (("Goal" :in-theory (enable array1p-rewrite not-assoc-equal-when-bounded-integer-alistp-out-of-bounds normalize-alen1-name))))