Check if a secp256k1 point is
the point at infinity
(secp256k1-point-infinityp point) → yes/no
Function:
(defun secp256k1-point-infinityp (point) (declare (xargs :guard (secp256k1-pointp point))) (and (equal (secp256k1-point->x point) 0) (equal (secp256k1-point->y point) 0)))
Theorem:
(defthm booleanp-of-secp256k1-point-infinityp (b* ((yes/no (secp256k1-point-infinityp point))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm secp256k1-point-infinityp-of-secp256k1-point-fix-point (equal (secp256k1-point-infinityp (secp256k1-point-fix point)) (secp256k1-point-infinityp point)))
Theorem:
(defthm secp256k1-point-infinityp-secp256k1-point-equiv-congruence-on-point (implies (secp256k1-point-equiv point point-equiv) (equal (secp256k1-point-infinityp point) (secp256k1-point-infinityp point-equiv))) :rule-classes :congruence)