RIPEMD-160 interface.
RIPEMD-160 is specified in the `RIPEMD-160: A Strengthened Version of RIPEMD' document.
According to the aforementioned document, the input of RIPEMD-160 is a sequence of any number of bits, or any number of bytes.
According to the aforementioned document, the output of RIPEMD-160 is a sequence of exactly 160 bits, or 20 bytes.
Theorem:
(defthm bit-list-of-ripemd-160-bits (bit-listp (ripemd-160-bits bits)))
Theorem:
(defthm byte-list-of-ripemd-160-bytes (byte-listp (ripemd-160-bytes bytes)))
Theorem:
(defthm len-of-ripemd-160-bits (equal (len (ripemd-160-bits bits)) 160))
Theorem:
(defthm len-of-ripemd-160-bytes (equal (len (ripemd-160-bytes bytes)) 20))
Theorem:
(defthm ripemd-160-bits-of-bit-list-fix-bits (equal (ripemd-160-bits (acl2::bit-list-fix bits)) (ripemd-160-bits bits)))
Theorem:
(defthm ripemd-160-bits-bit-list-equiv-congruence-on-bits (implies (acl2::bit-list-equiv bits bits-equiv) (equal (ripemd-160-bits bits) (ripemd-160-bits bits-equiv))) :rule-classes :congruence)
Theorem:
(defthm ripemd-160-bytes-of-byte-list-fix-bytes (equal (ripemd-160-bytes (byte-list-fix bytes)) (ripemd-160-bytes bytes)))
Theorem:
(defthm ripemd-160-bytes-byte-list-equiv-congruence-on-bytes (implies (byte-list-equiv bytes bytes-equiv) (equal (ripemd-160-bytes bytes) (ripemd-160-bytes bytes-equiv))) :rule-classes :congruence)
Theorem:
(defthm true-listp-of-ripemd-160-bits (true-listp (ripemd-160-bits bits)) :rule-classes :type-prescription)
Theorem:
(defthm true-listp-of-ripemd-160-bytes (true-listp (ripemd-160-bytes bytes)) :rule-classes :type-prescription)
Theorem:
(defthm consp-of-ripemd-160-bits (consp (ripemd-160-bits bits)) :rule-classes :type-prescription)
Theorem:
(defthm consp-of-ripemd-160-bytes (consp (ripemd-160-bytes bytes)) :rule-classes :type-prescription)
Theorem:
(defthm byte-list20p-of-ripemd-160-bytes (byte-list20p (ripemd-160-bytes bytes)))