The function
(jubjub-point->v point) → v
[ZPS] defines this function on any finite point (in fact, on any pair), but it is only used on Jubjub points.
This is always below the Jubjub field prime.
Function:
(defun jubjub-point->v (point) (declare (xargs :guard (jubjub-pointp point))) (let ((__function__ 'jubjub-point->v)) (declare (ignorable __function__)) (ecurve::point-finite->y point)))
Theorem:
(defthm natp-of-jubjub-point->v (b* ((v (jubjub-point->v point))) (natp v)) :rule-classes :type-prescription)
Theorem:
(defthm jubjub-point->v-upper-bound (implies (jubjub-pointp point) (b* ((?v (jubjub-point->v point))) (< v (jubjub-q)))) :rule-classes :linear)
Theorem:
(defthm fep-of-jubjub-point->v (implies (jubjub-pointp point) (b* ((?v (jubjub-point->v point))) (fep v (jubjub-q)))))