The function
(group-hash d m) → point?
[ZPS] allows the argument
Function:
(defun group-hash (d m) (declare (xargs :guard (and (byte-listp d) (byte-listp m)))) (declare (xargs :guard (and (= (len d) 8) (< (len m) (- blake::*blake2s-max-data-byte-length* 128))))) (let ((__function__ 'group-hash)) (declare (ignorable __function__)) (b* ((hash (blake2s-256 d (append *urs* m))) (point (jubjub-abst (leos2bsp hash))) ((unless (jubjub-pointp point)) nil) (qoint (jubjub-mul (jubjub-h) point)) ((when (equal qoint (twisted-edwards-zero))) nil)) qoint)))
Theorem:
(defthm maybe-jubjub-pointp-of-group-hash (b* ((point? (group-hash d m))) (maybe-jubjub-pointp point?)) :rule-classes :rewrite)