The short Weierstrass curve supplied by an ECPP step, reduced modulo p.
Equations
- Hex.ECPP.shortCurve p a b = { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := ↑a, a₆ := ↑b }
Instances For
The checker's short curve has zero coefficients a₁, a₂ and a₃.
The coordinates produced by a checked division branch are the field secant or tangent formulas over every prime divisor.
A checked raw point lies on the reduced short curve.
A raw point represents an actual nonsingular affine point after reducing its coordinates into a prime field.
Equations
- Hex.ECPP.Point.Rep p a b Hex.ECPP.Point.infinity P = (P = 0)
- Hex.ECPP.Point.Rep p a b (Hex.ECPP.Point.affine x y) P = ∃ (h : (Hex.ECPP.shortCurve p a b).toAffine.Nonsingular ↑x ↑y), P = WeierstrassCurve.Affine.Point.some (↑x) (↑y) h
Instances For
The checked starting point represents a nonidentity group element over every prime divisor of the candidate.
The witness quotient in the distinct-abscissa branch is Mathlib's secant slope.
The witness quotient in the equal-point branch is Mathlib's tangent slope. The inverse witness excludes a vertical tangent in every field.
If raw coordinates equal Mathlib's affine addition formulas, they represent the actual group sum.
A checked secant branch is the actual affine group sum in every prime residue field.
A checked tangent branch is the actual affine group sum in every prime residue field.
Every accepted raw addition agrees with Mathlib's group law after reduction to a prime divisor.