Complements on admissible changes of variables #
Material complementing Mathlib/AlgebraicGeometry/EllipticCurve/VariableChange.lean: the
negation automorphism [-1] of a Weierstrass curve as an admissible change of variables, with
its involution API, together with the compatibility of the action with base change
(baseChange_smul_baseChange) and the three base-change facts that Galois descent runs on:
smul_eq_of_baseChange_smul_eq (a relation between base changes descends when the change of
variables does), negVariableChange_baseChange_map ([-1] is defined over the base, so a base
automorphism fixes it) and map_smul_baseChange_eq (the conjugate of an isomorphism of base
changes is again one). Comparing an isomorphism with its conjugate via the last of these is what
produces the Galois cocycle used by the twist classification.
That cocycle comparison lands on a product C * [-1], whose four components are read off here as
mul_negVariableChange_u/_r/_s/_t rather than by unfolding VariableChange.mul_def against the
components of [-1] at each use.
The negation is the nontrivial automorphism in the Aut (E, O)
milestone of TauCetiRoadmap/EllipticCurves/README.md §Layer 1, proved in
TauCeti/AlgebraicGeometry/EllipticCurve/Aut.lean to exhaust Aut(E) with the identity when
j(E) ∉ {0, 1728}.
Everything here is stated over a commutative ring: ⟨-1, 0, -a₁, -a₃⟩ is an admissible change
of variables for a Weierstrass curve over any commutative ring, and the two identities it
satisfies are polynomial. Only the nontriviality negVariableChange_ne_one needs the curve to
be elliptic over a nontrivial ring.
Adapted from the FLT project (ImperialCollegeLondon/FLT,
FLT/Mathlib/AlgebraicGeometry/EllipticCurve/VariableChange.lean at the roadmap's pin
bc2fe8ff7396 (FLT PR #1088), Apache 2.0, by Kevin Buzzard and Claude), generalised here from
FLT's field-level statements to a commutative ring.
The automorphism [-1] : (x, y) ↦ (x, -y - a₁x - a₃) of a Weierstrass curve, as an admissible
change of variables ⟨-1, 0, -a₁, -a₃⟩. It fixes E (negVariableChange_smul_self) and is an
involution (negVariableChange_mul_self).
Instances For
The negation automorphism fixes the curve.
The negation automorphism commutes with base change along a ring homomorphism.
The negation automorphism is nontrivial for an elliptic curve: where 2 ≠ 0 it has
u = -1 ≠ 1, and where 2 = 0 it has (s, t) = (-a₁, -a₃) ≠ (0, 0), since an elliptic curve
over a ring in which 2 = 0 cannot have a₁ = a₃ = 0.
A change of variables maps its inverse to the inverse of its image. Mathlib has this as
map_inv for the bundled VariableChange.mapHom; this is the same fact in the .map spelling,
which is the one goals are phrased in — rw does not see through mapHom φ C ≡ C.map φ.
A change of variables maps the identity to the identity, in the .map spelling. The
companion of VariableChange.map_inv; see there for why the bundled mapHom form is not enough.
A change of variables maps a product to the product of the images, in the .map spelling.
The companion of VariableChange.map_inv; see there for why the bundled mapHom form is not
enough.
Components of a change of variables composed with [-1] #
[-1] has u = -1 and r = 0, so composing with it negates u, fixes r, and shifts s and
t by the curve's a₁ and a₃. These four are @[simp]: their right-hand sides are the normal
form wanted downstream, since the cocycle comparisons of the twist classification land on exactly
this product.
Composing with [-1] negates the scaling factor u.
Composing with [-1] leaves the translation r unchanged, [-1] having r = 0 and
u = -1 entering squared.
Composing with [-1] negates the shear s and shifts it by the curve's a₁.
Composing with [-1] negates the translation t and shifts it by r * a₁ and the curve's
a₃.
The negation automorphism is an involution.
The negation automorphism is its own inverse, being an involution.
Base change commutes with the action of a change of variables. Base changing a curve and
then acting by the base-changed variable change gives the same model as acting first and base
changing the result, so a VariableChange-invariant statement over R transports to L. Stated
in the baseChange spelling, so it rewrites directly in goals phrased that way.
A relation between base changes descends, provided the change of variables does. If C is
defined over R and Cᴸ carries Vᴸ to Wᴸ, then C already carries V to W over R. The
content is that base change is injective on models when R → L is.
The automorphism [-1] of a base-changed curve is defined over the base, hence fixed by
every R-algebra map L → L: its four components -1, 0, -a₁, -a₃ all come from R.
The conjugate of an isomorphism between base-changed curves is again one. If
ρ : Vᴸ ≅ Wᴸ and V, W are defined over R, then σρ is also an isomorphism Vᴸ ≅ Wᴸ,
because σ fixes both curves. Only that σ is an R-algebra map is used, not that it is
invertible; the Galois case is the instance the twist classification takes. Comparing ρ with
σρ is what produces the Galois cocycle.