FLT/Mathlib/AlgebraicGeometry/EllipticCurve/VariableChange.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Pinned FLT blueprint introduction
12 declarations, 0 contain sorry, 0 declared as axioms
Complements on admissible changes of variables
Material for Mathlib.AlgebraicGeometry.EllipticCurve.VariableChange: decidable equality,
the negation automorphism [-1], compatibility of changes of variables with base change,
and Galois descent for changes of variables.
Imports (3)
Imported by 3 files
- instance
WeierstrassCurve.VariableChange.instDecidableEqTwo admissible changes of variables agree iff their four coefficients do; this makes equality of changes of variables decidable over a commutative ring with decidable equality line 28 sourceSource documentation
Two admissible changes of variables agree iff their four coefficients do; this makes equality of changes of variables decidable over a commutative ring with decidable equality.
no axioms what this means
Statement uses:
CommRing,DecidableEq,WeierstrassCurve.VariableChangeProof uses:
decidable_of_iff,Eq,And,Units,WeierstrassCurve.VariableChange.u,WeierstrassCurve.VariableChange.r,WeierstrassCurve.VariableChange.s,WeierstrassCurve.VariableChange.t6 instances, coercions and auxiliary constants left out.
instance VariableChange.instDecidableEq {R : Type*} [CommRing R] [DecidableEq R] : DecidableEq (VariableChange R) := … - def
WeierstrassCurve.negVariableChangeThe automorphism[-1] : (x, y) ↦ (x, -y - a₁x - a₃)of a Weierstrass curve, as an admissible change of variables⟨-1, 0, -a₁, -a₃⟩line 37 sourceSource documentation
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 fixesE(negVariableChange_smul_self) and is an involution (negVariableChange_mul_self).standard axioms: Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,WeierstrassCurve.VariableChangeProof uses:
WeierstrassCurve.VariableChange.mk,Neg.neg,Units,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.a₃25 instances, coercions and auxiliary constants left out.
def negVariableChange : VariableChange K := …
- lemma
WeierstrassCurve.negVariableChange_uline 40 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,Eq,Units,WeierstrassCurve.VariableChange.u, WeierstrassCurve.negVariableChange,Neg.neg,OfNat.ofNatProof uses:
rfl15 instances, coercions and auxiliary constants left out.
- lemma
WeierstrassCurve.negVariableChange_smul_selfline 42 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,Eq,HSMul.hSMul,WeierstrassCurve.VariableChange, WeierstrassCurve.negVariableChangeProof uses:
Eq.mpr,WeierstrassCurve.mk,HAdd.hAdd,HMul.hMul,OfNat.ofNat,Nat,WeierstrassCurve.a₁,Neg.neg,HSub.hSub,WeierstrassCurve.a₂,HPow.hPow,WeierstrassCurve.a₃,WeierstrassCurve.a₄,WeierstrassCurve.a₆,id,congrFun',congrArg,congr,Inv.inv,Unitsand 93 more97 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
WeierstrassCurve.negVariableChange_mul_selfline 46 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,Eq,WeierstrassCurve.VariableChange,HMul.hMul, WeierstrassCurve.negVariableChange,OfNat.ofNatProof uses:
of_eq_true,WeierstrassCurve.VariableChange.mk,Units,Eq.trans,True,congrFun',congrArg,congr,WeierstrassCurve.VariableChange.u,Neg.neg,WeierstrassCurve.a₁,WeierstrassCurve.a₃,HAdd.hAdd,WeierstrassCurve.VariableChange.r,HPow.hPow,Nat,WeierstrassCurve.VariableChange.s,WeierstrassCurve.VariableChange.t,mul_neg,mul_oneand 21 more75 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
WeierstrassCurve.negVariableChange_invline 50 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,Eq,WeierstrassCurve.VariableChange,Inv.inv, WeierstrassCurve.negVariableChangeProof uses:
inv_eq_of_mul_eq_one_right, WeierstrassCurve.negVariableChange_mul_self5 instances, coercions and auxiliary constants left out.
- lemma
WeierstrassCurve.negVariableChange_mapBase change commutes with the negation automorphism: mapping[-1]onWthrough a ring homomorphismφgives[-1]onW.map φline 55 sourceSource documentation
Base change commutes with the negation automorphism: mapping
[-1]onWthrough a ring homomorphismφgives[-1]onW.map φ.standard axioms: Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,RingHom,Eq,WeierstrassCurve.VariableChange,WeierstrassCurve.VariableChange.map, WeierstrassCurve.negVariableChange,WeierstrassCurve.mapProof uses:
WeierstrassCurve.VariableChange.ext,Units.ext,WeierstrassCurve.VariableChange.u,of_eq_true,Eq.trans,Neg.neg,OfNat.ofNat,True,congr,congrArg,Units,WeierstrassCurve.VariableChange.mk,WeierstrassCurve.a₁,WeierstrassCurve.a₃,MonoidHom,Units.map,WeierstrassCurve.VariableChange.map_u,Units.map_neg,map_one,WeierstrassCurve.map_a₁and 10 more60 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma negVariableChange_map {A B : Type*} [Field A] [Field B] (W : WeierstrassCurve A) (φ : A →+* B) : W.negVariableChange.map φ = (W.map φ).negVariableChange := by …Mentions: WeierstrassCurve.negVariableChange
- lemma
WeierstrassCurve.negVariableChange_ne_oneDocumented declaration: negVariableChange_ne_one line 62 sourceSource documentation
The negation automorphism is nontrivial for an elliptic curve: in characteristic
≠ 2it hasu = -1 ≠ 1, and in characteristic2it has(s, t) = (-a₁, -a₃) ≠ (0, 0), since an elliptic curve in characteristic2cannot havea₁ = a₃ = 0.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,WeierstrassCurve.IsElliptic,Ne,WeierstrassCurve.VariableChange, WeierstrassCurve.negVariableChange,OfNat.ofNatProof uses:
Eq,Nat,Or,False,eq_or_ne,WeierstrassCurve.VariableChange.s,congrArg,WeierstrassCurve.VariableChange.t,Eq.mp,WeierstrassCurve.a₁,WeierstrassCurve.a₃,Mathlib.Tactic.Contrapose.contrapose₂,Not,Neg.neg,WeierstrassCurve.VariableChange.u,Mathlib.Tactic.LinearCombination.eq_of_eq,Eq.symm,Mathlib.Tactic.LinearCombination.eq_rearrange,HAdd.hAdd,Mathlib.Tactic.Ring.of_eqand 33 more51 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
lemma negVariableChange_ne_one [E.IsElliptic] : E.negVariableChange ≠ 1 := by …
- lemma
WeierstrassCurve.negVariableChange_baseChange_mapThe automorphism[-1]ofEoverLis defined overK, hence fixed by the Galois action: its components-1, 0, -a₁, -a₃all lie inKline 80 sourceSource documentation
The automorphism
[-1]ofEoverLis defined overK, hence fixed by the Galois action: its components-1, 0, -a₁, -a₃all lie inK.standard axioms: Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,Algebra,AlgEquiv,Eq,WeierstrassCurve.VariableChange,WeierstrassCurve.VariableChange.map, WeierstrassCurve.negVariableChange,WeierstrassCurve.baseChange,AlgHom.toRingHomProof uses:
WeierstrassCurve.VariableChange.ext,Units.ext,WeierstrassCurve.VariableChange.u,of_eq_true,Eq.trans,Neg.neg,OfNat.ofNat,True,congr,congrArg,Units,WeierstrassCurve.VariableChange.mk,RingHom,Algebra.algebraMap,WeierstrassCurve.a₁,WeierstrassCurve.a₃,MonoidHom,Units.map,WeierstrassCurve.VariableChange.r,WeierstrassCurve.VariableChange.sand 9 more67 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma negVariableChange_baseChange_map (σ : L ≃ₐ[K] L) : (E.baseChange L).negVariableChange.map σ.toAlgHom.toRingHom = (E.baseChange L).negVariableChange := by …Mentions: WeierstrassCurve.negVariableChange
- lemma
WeierstrassCurve.baseChange_smul_baseChangeBase change commutes with the action of changes of variables line 87 sourceSource documentation
Base change commutes with the action of changes of variables.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,Algebra,WeierstrassCurve.VariableChange,WeierstrassCurve,Eq,HSMul.hSMul,WeierstrassCurve.VariableChange.baseChange,WeierstrassCurve.baseChangeProof uses:
WeierstrassCurve.map_variableChange,Algebra.algebraMap10 instances, coercions and auxiliary constants left out.
lemma baseChange_smul_baseChange (C : VariableChange K) (V : WeierstrassCurve K) : (C.baseChange L) • V.baseChange L = (C • V).baseChange L := … - lemma
WeierstrassCurve.smul_eq_of_baseChange_smul_eqA relationCᴸ • Vᴸ = Wᴸbetween base changes, withCdefined overK, descends toC • V = WoverKline 93 sourceSource documentation
A relation
Cᴸ • Vᴸ = Wᴸbetween base changes, withCdefined overK, descends toC • V = WoverK.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,Algebra,WeierstrassCurve.VariableChange,WeierstrassCurve,Eq,HSMul.hSMul,WeierstrassCurve.VariableChange.baseChange,WeierstrassCurve.baseChangeProof uses:
WeierstrassCurve.map_injective,Algebra.algebraMap,FaithfulSMul.algebraMap_injective,Eq.trans,WeierstrassCurve.map,Eq.symm, WeierstrassCurve.baseChange_smul_baseChange17 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma smul_eq_of_baseChange_smul_eq (C : VariableChange K) {V W : WeierstrassCurve K} (h : (C.baseChange L) • V.baseChange L = W.baseChange L) : C • V = W := by … - lemma
WeierstrassCurve.map_smul_baseChange_eqThe Galois conjugate of anL-isomorphism between base-changed curves is again one line 99 sourceSource documentation
The Galois conjugate of an
L-isomorphism between base-changed curves is again one.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,Algebra,AlgEquiv,WeierstrassCurve,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul,WeierstrassCurve.baseChange,WeierstrassCurve.VariableChange.map,AlgHom.toRingHomProof uses:
WeierstrassCurve.map,WeierstrassCurve.map_baseChange,WeierstrassCurve.map_variableChange,Eq.mp,congrArg23 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
lemma map_smul_baseChange_eq (σ : L ≃ₐ[K] L) {V W : WeierstrassCurve K} {ρ : VariableChange L} (hρ : ρ • V.baseChange L = W.baseChange L) : (ρ.map σ.toAlgHom.toRingHom) • V.baseChange L = W.baseChange L := by …