Edwards-side facts: completeness and the special sums #
Because d is not a square, the denominators of Ed25519Math.add never vanish on curve points.
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.one_add_d_sq_ne
{x y : Ed25519Facts.F}
(h : -x ^ 2 + y ^ 2 = 1 + Ed25519Facts.d * x ^ 2 * y ^ 2)
:
On a curve point 1 + d y² ≠ 0.
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.complete
{x1 y1 x2 y2 : Ed25519Facts.F}
(h1 : -x1 ^ 2 + y1 ^ 2 = 1 + Ed25519Facts.d * x1 ^ 2 * y1 ^ 2)
(h2 : -x2 ^ 2 + y2 ^ 2 = 1 + Ed25519Facts.d * x2 ^ 2 * y2 ^ 2)
:
Completeness of the Edwards law: the denominators 1 ± d x₁x₂y₁y₂ never vanish on curve
points.
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.one_sub_sq_ne
{q r : Ed25519Math.Point}
(hq : Ed25519Math.onCurve q)
(hr : Ed25519Math.onCurve r)
:
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.one_add_ne
{q r : Ed25519Math.Point}
(hq : Ed25519Math.onCurve q)
(hr : Ed25519Math.onCurve r)
:
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.one_sub_ne
{q r : Ed25519Math.Point}
(hq : Ed25519Math.onCurve q)
(hr : Ed25519Math.onCurve r)
:
Adding the order-2 point (0, -1) negates both coordinates.
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.add_neg
(q : Ed25519Math.Point)
(hq : Ed25519Math.onCurve q)
:
q + (-x, y) = (0, 1): the negative of (x, y) is (-x, y).
theorem
Cryptlib.Primitives.Sign.Ed25519Edwards.add_conj
(q : Ed25519Math.Point)
(hq : Ed25519Math.onCurve q)
:
q + (x, -y) = (0, -1).