Keccak-512 interface.
Keccak-512 is specified in the Keccak web site, in particular `The Keccak Reference' document, Version 3.0.
According to the aforementioned specification, the input of Keccak-512 is a sequence of any number of bits, or any number of bytes.
According to the aforementioned specification, the output of Keccak-512 is a sequence of exactly 512 bits, or 64 bytes.
See also:
Theorem:
(defthm bit-list-of-keccak-512-bits (bit-listp (keccak-512-bits bits)))
Theorem:
(defthm byte-list-of-keccak-512-bytes (byte-listp (keccak-512-bytes bytes)))
Theorem:
(defthm len-of-keccak-512-bits (equal (len (keccak-512-bits bits)) 512))
Theorem:
(defthm len-of-keccak-512-bytes (equal (len (keccak-512-bytes bytes)) 64))
Theorem:
(defthm keccak-512-bits-of-bit-list-fix-bits (equal (keccak-512-bits (acl2::bit-list-fix bits)) (keccak-512-bits bits)))
Theorem:
(defthm keccak-512-bits-bit-list-equiv-congruence-on-bits (implies (acl2::bit-list-equiv bits bits-equiv) (equal (keccak-512-bits bits) (keccak-512-bits bits-equiv))) :rule-classes :congruence)
Theorem:
(defthm keccak-512-bytes-of-byte-list-fix-bytes (equal (keccak-512-bytes (byte-list-fix bytes)) (keccak-512-bytes bytes)))
Theorem:
(defthm keccak-512-bytes-byte-list-equiv-congruence-on-bytes (implies (byte-list-equiv bytes bytes-equiv) (equal (keccak-512-bytes bytes) (keccak-512-bytes bytes-equiv))) :rule-classes :congruence)
Theorem:
(defthm true-listp-of-keccak-512-bits (true-listp (keccak-512-bits bits)) :rule-classes :type-prescription)
Theorem:
(defthm true-listp-of-keccak-512-bytes (true-listp (keccak-512-bytes bytes)) :rule-classes :type-prescription)
Theorem:
(defthm consp-of-keccak-512-bits (consp (keccak-512-bits bits)) :rule-classes :type-prescription)
Theorem:
(defthm consp-of-keccak-512-bytes (consp (keccak-512-bytes bytes)) :rule-classes :type-prescription)
Theorem:
(defthm byte-list64p-of-keccak-512-bytes (byte-list64p (keccak-512-bytes bytes)))