Definitions/Def_WeierstrassCurve_RatPointMap_probe.lean
Coordinatewise map on affine points along a ring homomorphism
Fix fields F and k, a ring homomorphism f : F \to k, and a Weierstrass curve W_0 over F, given by its coefficients a_1,a_2,a_3,a_4,a_6. Mathlib's base change WeierstrassCurve.map produces the Weierstrass curve W_0.\mathrm{map}\,f over k whose coefficients are the images f(a_i). The module defines ratPointMap, the map from the set of affine points of W_0 (the Mathlib type W₀.toAffine.Point, whose elements are either the point at infinity .zero or a pair (x,y) of coordinates in F together with a proof that (x,y) is a nonsingular point of the affine equation) to the affine points of W_0.\mathrm{map}\,f. It is defined by cases: the point at infinity goes to the point at infinity, and a point with coordinates (x,y) goes to the point with coordinates (f(x), f(y)). That the image pair is again a nonsingular solution of the transported equation is supplied by Mathlib's WeierstrassCurve.Affine.map_nonsingular, applied with the injectivity of f (automatic for a ring homomorphism out of a field). The definition is a map of underlying point sets only; no group-homomorphism property is asserted here.
Alongside it, a small auxiliary congruence statement some_congr records that for an affine Weierstrass curve V over k and coordinates x_1,y_1,x_2,y_2 in k with x_1 = x_2 and y_1 = y_2, the points Point.some x₁ y₁ h₁ and Point.some x₂ y₂ h₂ are equal, for any two nonsingularity proofs h_1, h_2: the point depends only on its coordinates, the proof component being irrelevant.
Relation to Mathlib
The construction rests on Mathlib's base change WeierstrassCurve.map and on WeierstrassCurve.Affine.map_nonsingular; ratPointMap itself is the project's own name for the resulting map on affine point sets.
Where it is used
The map is used where points of a Weierstrass curve have to be transported along a homomorphism of the base field, for instance when comparing points of a curve with points of its base change.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 106, Springer, 1986, Chapter III
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 21 lines
- 2 declarations
- used in the statements of 0 theorems and imported by 2 proofs
- imports 0 definition modules
Source file: Definitions/Def_WeierstrassCurve_RatPointMap_probe.lean
Imports
- only Mathlib
Imported by
Declarations
Source
import Mathlib.AlgebraicGeometry.EllipticCurve.Affine.Point ↗ set_option autoImplicit false namespace WeierstrassCurve open WeierstrassCurve.Affine variable {F k : Type} [Field F] [Field k] (f : F →+* k) {W₀ : WeierstrassCurve F} private theorem some_congr {V : Affine k} {x₁ y₁ x₂ y₂ : k} (hx : x₁ = x₂) (hy : y₁ = y₂) (h₁ : V.Nonsingular x₁ y₁) (h₂ : V.Nonsingular x₂ y₂) : Point.some x₁ y₁ h₁ = Point.some x₂ y₂ h₂ := by subst hx; subst hy; rfl def ratPointMap : W₀.toAffine.Point → (W₀.map f).toAffine.Point | .zero => .zero | .some x y h => .some (f x) (f y) ((W₀.toAffine.map_nonsingular f.injective x y).mpr h) end WeierstrassCurve
Statements phrased using this module (0)
No statement module imports it directly (it is used through other definition modules or by proofs).