Jacobian coordinates for Weierstrass curves #
This file defines the type of points on a Weierstrass curve as a tuple, consisting of an equivalence class of triples up to scaling by weights, satisfying a Weierstrass equation with a nonsingular condition.
Mathematical background #
Let W be a Weierstrass curve over a field F. A point on the weighted projective plane with
weights $(2, 3, 1)$ is an equivalence class of triples $[x:y:z]$ with coordinates in F such that
$(x, y, z) \sim (x', y', z')$ precisely if there is some unit $u$ of F such that
$(x, y, z) = (u^2x', u^3y', uz')$, with an extra condition that $(x, y, z) \ne (0, 0, 0)$.
A rational point is a point on the $(2, 3, 1)$-projective plane satisfying a $(2, 3, 1)$-homogeneous
Weierstrass equation $Y^2 + a_1XYZ + a_3YZ^3 = X^3 + a_2X^2Z^2 + a_4XZ^4 + a_6Z^6$, and being
nonsingular means the partial derivatives $W_X(X, Y, Z)$, $W_Y(X, Y, Z)$, and $W_Z(X, Y, Z)$ do not
vanish simultaneously. Note that the vanishing of the Weierstrass equation and its partial
derivatives are independent of the representative for $[x:y:z]$, and the nonsingularity condition
already implies that $(x, y, z) \ne (0, 0, 0)$, so a nonsingular rational point on W can simply be
given by a tuple consisting of $[x:y:z]$ and the nonsingular condition on any representative.
In cryptography, as well as in this file, this is often called the Jacobian coordinates of W.
Main definitions #
WeierstrassCurve.Jacobian.PointClass: the equivalence class of a point representative.WeierstrassCurve.Jacobian.toAffine: the Weierstrass curve in affine coordinates.WeierstrassCurve.Jacobian.Nonsingular: the nonsingular condition on a point representative.WeierstrassCurve.Jacobian.NonsingularLift: the nonsingular condition on a point class.
Implementation notes #
A point representative is implemented as a term P of type Fin 3 → R, which allows for the vector
notation ![x, y, z]. However, P is not definitionally equivalent to the expanded vector
![P x, P y, P z], so the auxiliary lemma fin3_def can be used to convert between the two forms.
The equivalence of two point representatives P and Q is implemented as an equivalence of orbits
of the action of Rˣ, or equivalently that there is some unit u of R such that P = u • Q.
However, u • Q is again not definitionally equal to ![u² * Q x, u³ * Q y, u * Q z], so the
auxiliary lemmas smul_fin3 and smul_fin3_ext can be used to convert between the two forms.
References #
[J Silverman, The Arithmetic of Elliptic Curves][silverman2009]
Tags #
elliptic curve, rational point, Jacobian coordinates
Weierstrass curves #
An abbreviation for a Weierstrass curve in Jacobian coordinates.
Equations
Instances For
The multiplicative action on a point representative.
Equations
- WeierstrassCurve.Jacobian.instMulActionPoint = MulAction.mk ⋯ ⋯
Instances For
The equivalence setoid for a point representative.
Equations
- WeierstrassCurve.Jacobian.instSetoidPoint = MulAction.orbitRel Rˣ (Fin 3 → R)
Instances For
The equivalence class of a point representative.
Equations
Instances For
The coercion to a Weierstrass curve in affine coordinates.
Equations
- W.toAffine = W
Instances For
Equations and nonsingularity #
The polynomial $W(X, Y, Z) := Y^2 + a_1XYZ + a_3YZ^3 - (X^3 + a_2X^2Z^2 + a_4XZ^4 + a_6Z^6)$
associated to a Weierstrass curve W over R. This is represented as a term of type
MvPolynomial (Fin 3) R, where X 0, X 1, and X 2 represent $X$, $Y$, and $Z$ respectively.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The proposition that a point representative $(x, y, z)$ lies in W.
In other words, $W(x, y, z) = 0$.
Equations
- W.Equation P = ((MvPolynomial.eval P) W.polynomial = 0)
Instances For
The partial derivative $W_X(X, Y, Z)$ of $W(X, Y, Z)$ with respect to $X$.
Equations
- W.polynomialX = (MvPolynomial.pderiv 0) W.polynomial
Instances For
The partial derivative $W_Y(X, Y, Z)$ of $W(X, Y, Z)$ with respect to $Y$.
Equations
- W.polynomialY = (MvPolynomial.pderiv 1) W.polynomial
Instances For
The partial derivative $W_Z(X, Y, Z)$ of $W(X, Y, Z)$ with respect to $Z$.
Equations
- W.polynomialZ = (MvPolynomial.pderiv 2) W.polynomial
Instances For
The proposition that a point representative $(x, y, z)$ in W is nonsingular.
In other words, either $W_X(x, y, z) \ne 0$, $W_Y(x, y, z) \ne 0$, or $W_Z(x, y, z) \ne 0$.
Equations
- W.Nonsingular P = (W.Equation P ∧ ((MvPolynomial.eval P) W.polynomialX ≠ 0 ∨ (MvPolynomial.eval P) W.polynomialY ≠ 0 ∨ (MvPolynomial.eval P) W.polynomialZ ≠ 0))
Instances For
The proposition that a point class on W is nonsingular. If P is a point representative,
then W.NonsingularLift ⟦P⟧ is definitionally equivalent to W.Nonsingular P.
Equations
- W.NonsingularLift P = Quotient.lift W.Nonsingular ⋯ P