Documentation

Atlas.EllipticCurves.code.Schoof

theorem Schoof.addOrderOf_eq_prime_of_torsion {G : Type u_1} [AddGroup G] {P : G} { : } (hℓ : Nat.Prime ) (hP : P = 0) (hne : P 0) :

If P is a nonzero element of an additive group annihilated by a prime , then the additive order of P equals . Used in Schoof's algorithm to control the order of -torsion points on an elliptic curve.

theorem Schoof.zmod_eq_of_dvd_sub {c t : } { : } (hdvd : c - t) :
c = t

If divides c - t in , then c and t represent the same residue class in ZMod. A small bridging lemma used to read off the trace of Frobenius modulo from an integer congruence.

theorem Schoof.frobenius_trace_mod_ell {F : Type u} [Field F] [DecidableEq F] {W : WeierstrassCurve.Affine F} (π : W.Point →+ W.Point) (t q : ) ( : ) (hℓ : Nat.Prime ) (char_eq : ∀ (P : W.Point), P = 0π (π P) - t π P + q P = 0) (frob_torsion : ∀ (P : W.Point), P = 0 π P = 0) (frob_nonzero : ∀ (P : W.Point), P = 0P 0π P 0) {P : W.Point} (hP_torsion : P = 0) (hP_ne : P 0) {c : } (hc : π (π P) - c π P + q P = 0) :
c = t

Lemma 8.2: let E/𝔽_q have Frobenius π, let be a prime with ℓ ∤ q, and let P ∈ E[ℓ] be nonzero. If for some integer c the equation π_ℓ²(P) - c · π_ℓ(P) + q_ℓ · P = 0 holds, then c ≡ tr π (mod ℓ). This is the core congruence underlying Schoof's algorithm: any integer c solving the characteristic equation on a single nonzero -torsion point must agree with the trace of Frobenius modulo .