All proofs
Project-declaredLean 4.32.0 · mathlib@249c48c2

Exists smul eq or exists smul eq quadratic Twist

WeierstrassCurve.exists_smul_eq_or_exists_smul_eq_quadraticTwist

Plain-language statement

Classification of the forms of E split by L/K, for j(E) ∉ {0, 1728}: an elliptic curve over K which becomes isomorphic to E over L is isomorphic over K either to E or to its quadratic twist by L. (Such forms are classified by H¹(Gal(L/K), Aut(E_L)) = Hom(ℤ/2, {±1}), which has order 2. For j ∈ {0, 1728} the automorphism group is large...

Exact Lean statement

theorem exists_smul_eq_or_exists_smul_eq_quadraticTwist (hj₀ : E.j ≠ 0) (hj₁₇₂₈ : E.j ≠ 1728)
    (E' : WeierstrassCurve K)
    (h : ∃ C : VariableChange L, C • E'.baseChange L = E.baseChange L) :
    (∃ C : VariableChange K, C • E' = E) ∨ ∃ C : VariableChange K, C • E' = E.quadraticTwist L

Formal artifact

Lean source

Canonical source
Full Lean sourceLean 4
theorem exists_smul_eq_or_exists_smul_eq_quadraticTwist (hj₀ : E.j  0) (hj₁₇₂₈ : E.j  1728)    (E' : WeierstrassCurve K)    (h :  C : VariableChange L, C • E'.baseChange L = E.baseChange L) :    ( C : VariableChange K, C • E' = E)   C : VariableChange K, C • E' = E.quadraticTwist L := by  obtain ρ, hρ := h  obtain σ, hσ := exists_algEquiv_ne_one K L  obtain θ, hθ := exists_notMem_range_algebraMap K L  obtain C₁, hiso, hcoc := E.exists_smul_baseChange_and_map_eq L hθ hσ  have hc4L : (E.baseChange L).c₄  0 := E.baseChange_c₄_ne_zero L hj₀  have hc6L : (E.baseChange L).c₆  0 := E.baseChange_c₆_ne_zero L hj₁₇₂₈  have hmapmul :  a b : VariableChange L, (a * b).map σ.toAlgHom.toRingHom      = a.map σ.toAlgHom.toRingHom * b.map σ.toAlgHom.toRingHom :=    fun a b  map_mul (VariableChange.mapHom σ.toAlgHom.toRingHom) a b  have hmapinv :  a : VariableChange L, a⁻¹.map σ.toAlgHom.toRingHom      = (a.map σ.toAlgHom.toRingHom)⁻¹ :=    fun a  map_inv (VariableChange.mapHom σ.toAlgHom.toRingHom) a  -- The Galois conjugate `σρ = ρ.map σ` is again an isomorphism `E'ᴸ ≅ Eᴸ`  -- (`map_smul_baseChange_eq`).  have hσρ : (ρ.map σ.toAlgHom.toRingHom) • E'.baseChange L = E.baseChange L :=    map_smul_baseChange_eq L σ hρ  -- Hence `b := σρ · ρ⁻¹` is an automorphism of `Eᴸ`, so `b = 1` or `b = [-1]`.  have hρinv : ρ⁻¹ • E.baseChange L = E'.baseChange L := by rw [ hρ, inv_smul_smul]  have hb : (ρ.map σ.toAlgHom.toRingHom * ρ⁻¹) • E.baseChange L = E.baseChange L := by    rw [mul_smul, hρinv, hσρ]  rcases (E.baseChange L).eq_one_or_eq_negVariableChange_of_smul_eq_of_c₄_ne_zero hc4L hc6L hb    with hbcase | hbcase  · -- Trivial cocycle: `ρ` is `σ`-invariant, descends, and `E' ≅ E` over `K`.    left    have hρmap : ρ.map σ.toAlgHom.toRingHom = ρ := mul_inv_eq_one.mp hbcase    obtain ρK, hρK := exists_baseChange_eq_of_map_eq L hσ hρmap    exact ρK, smul_eq_of_baseChange_smul_eq L ρK (by rw [hρK]; exact hρ)  · -- Nontrivial cocycle: `χ := C₁⁻¹ · ρ` is `σ`-invariant (its cocycle cancels that of `C₁`),    -- descends, and `E' ≅ Eᶿ`, hence `E' ≅ Eᴸ` after the harmless change of generator.    right    have hρmap : ρ.map σ.toAlgHom.toRingHom = (E.baseChange L).negVariableChange * ρ :=      mul_inv_eq_iff_eq_mul.mp hbcase    have hC1inv : C₁⁻¹ • E.baseChange L = (E.quadraticTwistBy θ).baseChange L := by      rw [ hiso, inv_smul_smul]    have hχiso : (C₁⁻¹ * ρ) • E'.baseChange L = (E.quadraticTwistBy θ).baseChange L := by      rw [mul_smul, hρ, hC1inv]    have hχinv : (C₁⁻¹ * ρ).map σ.toAlgHom.toRingHom = C₁⁻¹ * ρ := by      rw [hmapmul, hmapinv, hcoc, hρmap, mul_inv_rev, (E.baseChange L).negVariableChange_inv]      have hnn : (E.baseChange L).negVariableChange          * ((E.baseChange L).negVariableChange * ρ) = ρ := by        rw [ mul_assoc, (E.baseChange L).negVariableChange_mul_self, one_mul]      rw [mul_assoc, hnn]    obtain χK, hχK := exists_baseChange_eq_of_map_eq L hσ hχinv    have hE'Tby : χK • E' = E.quadraticTwistBy θ :=      smul_eq_of_baseChange_smul_eq L χK (by rw [hχK]; exact hχiso)    obtain C₀, hC₀ := E.exists_smul_quadraticTwist_eq_quadraticTwistBy L hθ    refine C₀⁻¹ * χK, ?_    rw [mul_smul, hE'Tby,  hC₀, inv_smul_smul]
Project
Fermat's Last Theorem
License
Apache-2.0
Commit
8dd808888295
Source
FLT/KnownIn1980s/EllipticCurves/QuadraticTwists/QuadraticTwists.lean:547-598

Reuse this declaration

Bring the exact result into your workflow

The import identifies the source module. Your project still needs the pinned package dependency shown on this page.

What this badge means

This completion status comes from the project or community source. It has not yet been represented here as an independent rebuild and axiom audit.

Continue in this project

Related declarations

Project-declaredLean 4.32.0

Eq finsum quotient out of bij On

AbstractHeckeOperator.eq_finsum_quotient_out_of_bijOn'

Plain-language statement

If a is fixed by V then ∑ᶠ g ∈ s, g • a is independent of the choice s of coset representatives in G for a subset of G ⧸ V

number theoryarithmetic geometryFermat's Last Theorem

Source project: Fermat's Last Theorem

Person-level attribution pending.

View proof record
Project-declaredLean 4.32.0

Comm Group no compact automorphisms

CommGroup.no_compact_automorphisms

Plain-language statement

A connected compact Hausdorff abelian topological group does not admit a nontrivial compact group of automorphisms.

number theoryarithmetic geometryFermat's Last Theorem

Source project: Fermat's Last Theorem

Person-level attribution pending.

View proof record