Byte sequences.
These are finite lists of bytes, which model byte arrays in particular.
We use the library type byte-list to model byte sequences in our Bitcoin model.
Theorem:
(defthm nat-listp-when-byte-listp (implies (byte-listp bytes) (nat-listp bytes)))
Theorem:
(defthm car-of-byte-list-fix (implies (consp x) (equal (car (byte-list-fix x)) (byte-fix (car x)))))
Theorem:
(defthm cdr-of-byte-list-fix (equal (cdr (byte-list-fix x)) (byte-list-fix (cdr x))))
Theorem:
(defthm byte-list-equiv-implies-byte-list-equiv-append-1 (implies (byte-list-equiv x x-equiv) (byte-list-equiv (append x y) (append x-equiv y))) :rule-classes (:congruence))
Theorem:
(defthm byte-list-equiv-implies-byte-list-equiv-append-2 (implies (byte-list-equiv y y-equiv) (byte-list-equiv (append x y) (append x y-equiv))) :rule-classes (:congruence))