FLT/Mathlib/AlgebraicGeometry/EllipticCurve/Reduction.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
25 declarations, 0 contain sorry, 0 declared as axioms
Complements on reduction of elliptic curves
Material for Mathlib.AlgebraicGeometry.EllipticCurve.Reduction: the node polynomial and
its splitting criteria (answering the discriminant-characterization TODO there), a minimality
criterion via c₄, and uniqueness of minimal models (Silverman VII.1.3(b)): split
multiplicative reduction is an isomorphism invariant of minimal models.
Imports (5)
Imported by 3 files
- def
WeierstrassCurve.nodePolyDocumented declaration: nodePoly line 39 sourceSource documentation
The node polynomial
c₄ T² + a₁ c₄ T - (54 b₆ - 3 b₂ b₄ + a₂ c₄), whose roots are the slopes of the two tangent directions at the node of a multiplicative reduction; its splitting over the residue field governs whether the reduction is split (seeHasSplitMultiplicativeReduction).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,WeierstrassCurve,PolynomialProof uses:
HSub.hSub,HAdd.hAdd,HMul.hMul,RingHom,Polynomial.C,WeierstrassCurve.c₄,HPow.hPow,Nat,Polynomial.X,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄,WeierstrassCurve.a₂32 instances, coercions and auxiliary constants left out.
noncomputable def nodePoly {A : Type*} [CommRing A] (W : WeierstrassCurve A) : Polynomial A := … - lemma
WeierstrassCurve.nodePoly_mapThe node polynomial base-changed along a ring homomorphism line 43 sourceSource documentation
The node polynomial base-changed along a ring homomorphism.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,RingHom,WeierstrassCurve,Eq,Polynomial,Polynomial.map, WeierstrassCurve.nodePoly,HSub.hSub,HAdd.hAdd,HMul.hMul,Polynomial.C,WeierstrassCurve.c₄,HPow.hPow,Nat,Polynomial.X,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄and 1 moreProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,Polynomial.map_sub,congr,Polynomial.map_add,Polynomial.map_mul,Polynomial.map_C,Polynomial.map_pow,Polynomial.map_X,eq_self63 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_map {A : Type*} [CommRing A] {B : Type*} [CommRing B] (φ : A →+* B) (W : WeierstrassCurve A) : W.nodePoly.map φ = .C (φ W.c₄) * .X ^ 2 + .C (φ (W.a₁ * W.c₄)) * .X - .C (φ (54 * W.b₆ - 3 * W.b₂ * W.b₄ + W.a₂ * W.c₄)) := by … - lemma
WeierstrassCurve.map_nodePolyDocumented declaration: map_nodePoly line 53 sourceSource documentation
The node polynomial is natural in the coefficient ring: it commutes with base change of the Weierstrass equation along any ring homomorphism, since every coefficient is a polynomial in the
aᵢandPolynomial.mapis a ring homomorphism on each.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,RingHom,WeierstrassCurve,Eq,Polynomial, WeierstrassCurve.nodePoly,WeierstrassCurve.map,Polynomial.mapProof uses:
of_eq_true,Eq.trans,HSub.hSub,HAdd.hAdd,HMul.hMul,Polynomial.C,WeierstrassCurve.c₄,HPow.hPow,Nat,Polynomial.X,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄,WeierstrassCurve.a₂,True,congr,congrArg,congrFun'and 18 more51 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma map_nodePoly {A : Type*} [CommRing A] {B : Type*} [CommRing B] (φ : A →+* B) (W : WeierstrassCurve A) : (W.map φ).nodePoly = W.nodePoly.map φ := by …Mentions: WeierstrassCurve.nodePoly
- lemma
WeierstrassCurve.aeval_root_nodePoly_mapThe root of the (base-changed) node polynomial satisfies its defining quadratic relation line 62 sourceSource documentation
The root of the (base-changed) node polynomial satisfies its defining quadratic relation.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,RingHom,WeierstrassCurve,Eq,AdjoinRoot,Polynomial.map, WeierstrassCurve.nodePoly,HSub.hSub,HAdd.hAdd,HMul.hMul,Algebra.algebraMap,WeierstrassCurve.c₄,HPow.hPow,Nat,AdjoinRoot.root,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄and 1 moreProof uses:
AlgHom,Polynomial,Polynomial.aeval,Polynomial.C,Polynomial.X,congrArg, WeierstrassCurve.nodePoly_map,Eq.mpr,id,congrFun',congr,Eq.trans,map_mul,map_add,map_sub,Eq.mp,outParam,MonoidHom,MonoidHom.id,RingHom.idand 7 more112 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
lemma aeval_root_nodePoly_map {A : Type*} [CommRing A] {B : Type*} [CommRing B] (φ : A →+* B) (W : WeierstrassCurve A) : algebraMap B (AdjoinRoot (W.nodePoly.map φ)) (φ W.c₄) * AdjoinRoot.root (W.nodePoly.map φ) ^ 2 + algebraMap B (AdjoinRoot (W.nodePoly.map φ)) (φ (W.a₁ * W.c₄)) * AdjoinRoot.root (W.nodePoly.map φ) - algebraMap B (AdjoinRoot (W.nodePoly.map φ)) (φ (54 * W.b₆ - 3 * W.b₂ * W.b₄ + W.a₂ * W.c₄)) = 0 := by … - lemma
WeierstrassCurve.nodePoly_map_eq_quadraticThe reduced node polynomial, presented as a quadratic with an additive constant term — the form consumed by the quadratic separability and splitting criteria line 76 sourceSource documentation
The reduced node polynomial, presented as a quadratic with an additive constant term — the form consumed by the quadratic separability and splitting criteria.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,RingHom,WeierstrassCurve,Eq,Polynomial,Polynomial.map, WeierstrassCurve.nodePoly,HAdd.hAdd,HMul.hMul,Polynomial.C,WeierstrassCurve.c₄,HPow.hPow,Nat,Polynomial.X,OfNat.ofNat,WeierstrassCurve.a₁,Neg.neg,HSub.hSub,WeierstrassCurve.b₆,WeierstrassCurve.b₂and 2 moreProof uses:
Eq.mpr,id,congrArg, WeierstrassCurve.nodePoly_map,map_neg,sub_eq_add_neg,Eq.refl80 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_map_eq_quadratic {A : Type*} [CommRing A] {B : Type*} [CommRing B] (φ : A →+* B) (W : WeierstrassCurve A) : W.nodePoly.map φ = .C (φ W.c₄) * .X ^ 2 + .C (φ (W.a₁ * W.c₄)) * .X + .C (-φ (54 * W.b₆ - 3 * W.b₂ * W.b₄ + W.a₂ * W.c₄)) := by … - lemma
WeierstrassCurve.map_splitPolynomial_discrimThe image of the discriminant identitysplitPolynomial_discrimunder a ring homomorphism, in the shape produced by the quadratic criteria applied tonodePoly_map_eq_quadraticline 84 sourceSource documentation
The image of the discriminant identity
splitPolynomial_discrimunder a ring homomorphism, in the shape produced by the quadratic criteria applied tonodePoly_map_eq_quadratic.standard axioms: Quot.sound, propext what this means
Statement uses:
CommRing,RingHom,WeierstrassCurve,Eq,HSub.hSub,HPow.hPow,Nat,HMul.hMul,WeierstrassCurve.a₁,WeierstrassCurve.c₄,OfNat.ofNat,Neg.neg,HAdd.hAdd,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄,WeierstrassCurve.a₂,WeierstrassCurve.c₆Proof uses:
Eq.mpr,id,congrArg,mul_neg,sub_neg_eq_add,Eq.symm,map_pow,map_ofNat,map_mul,map_add, WeierstrassCurve.splitPolynomial_discrim89 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma map_splitPolynomial_discrim {A : Type*} [CommRing A] {B : Type*} [CommRing B] (φ : A →+* B) (W : WeierstrassCurve A) : φ (W.a₁ * W.c₄) ^ 2 - 4 * φ W.c₄ * (-φ (54 * W.b₆ - 3 * W.b₂ * W.b₄ + W.a₂ * W.c₄)) = φ (-(W.c₄ * W.c₆)) := by … - lemma
WeierstrassCurve.nodePoly_smulDocumented declaration: nodePoly_smul line 94 sourceSource documentation
Under a change of variables
C = (u, r, s, t), the node polynomial transforms by the affine substitutionT ↦ u T + sand the unit scalaru⁻⁶— reflecting that the tangent slopesλtransform asλ ↦ (λ - s)/u. In particular its splitting field is unchanged.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,WeierstrassCurve,WeierstrassCurve.VariableChange,Eq,Polynomial, WeierstrassCurve.nodePoly,HSMul.hSMul,HMul.hMul,RingHom,Polynomial.C,HPow.hPow,Nat,Inv.inv,Units,WeierstrassCurve.VariableChange.u,OfNat.ofNat,Polynomial.comp,HAdd.hAdd,Polynomial.X,WeierstrassCurve.VariableChange.sProof uses:
congrArg,Eq.mpr,Int,Neg.neg,id,congr,Eq.trans,congrFun',Int.neg_mul,one_mul,of_eq_true,inferInstance,Ring,True,Int.rawCast,Int.negOfNat,Mathlib.Tactic.Ring.Common.add_congr,Nat.rawCast,Mathlib.Tactic.Ring.Common.neg_congr,Mathlib.Tactic.Ring.cast_posand 85 more138 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_smul {A : Type*} [CommRing A] (W : WeierstrassCurve A) (C : VariableChange A) : (C • W).nodePoly = .C ((↑C.u⁻¹ : A) ^ 6) * W.nodePoly.comp (.C (↑C.u : A) * .X + .C C.s) := by …Mentions: WeierstrassCurve.nodePoly
- lemma
WeierstrassCurve.nodePoly_map_splits_smul_iffInvariance of the node polynomial's splitting under change of variables line 127 sourceSource documentation
Invariance of the node polynomial's splitting under change of variables. Since a change of variables transforms the node polynomial by an affine substitution and a nonzero scalar (
nodePoly_smul), whether it splits over a fieldkis unchanged. This is what makes split multiplicative reduction an isomorphism invariant.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Field,RingHom,WeierstrassCurve,WeierstrassCurve.VariableChange,Iff,Polynomial.Splits,Polynomial.map, WeierstrassCurve.nodePoly,HSMul.hSMulProof uses:
Ne,WeierstrassCurve.VariableChange.u,OfNat.ofNat,IsUnit.ne_zero,RingHom.isUnit_map,Units.isUnit,HPow.hPow,Nat,Inv.inv,Units,Eq.mpr,id,Eq,congrArg,map_pow,pow_ne_zero,HMul.hMul,Polynomial,Polynomial.C,Polynomial.compand 17 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_map_splits_smul_iff {A : Type*} [CommRing A] {k : Type*} [Field k] (φ : A →+* k) (W : WeierstrassCurve A) (C : VariableChange A) : ((C • W).nodePoly.map φ).Splits ↔ (W.nodePoly.map φ).Splits := by … - lemma
WeierstrassCurve.nodePoly_map_splits_iff_isSquareSplit criterion (residue characteristic ≠ 2) line 145 sourceSource documentation
Split criterion (residue characteristic ≠ 2). Over a field
kof characteristic≠ 2, the node polynomial splits — i.e. the two tangent directions at the node arek-rational — exactly when its discriminant-c₄ c₆(splitPolynomial_discrim) is a square ink. This is the tool that, applied to a quadratic twist via the scaling-c₄' c₆' = (t²-4n)⁵ · (-c₄ c₆), turns a nonsplit reduction into a split one after twisting by the right square class.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Field,NeZero,OfNat.ofNat,Nat,RingHom,WeierstrassCurve,Ne,WeierstrassCurve.c₄,Iff,Polynomial.Splits,Polynomial.map, WeierstrassCurve.nodePoly,IsSquare,Neg.neg,HMul.hMul,WeierstrassCurve.c₆Proof uses:
Eq.mpr,HAdd.hAdd,Polynomial,Polynomial.C,HPow.hPow,Polynomial.X,WeierstrassCurve.a₁,HSub.hSub,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄,WeierstrassCurve.a₂,id,Eq,congrArg, WeierstrassCurve.nodePoly_map_eq_quadratic,discrim,propext, Polynomial.splits_quadratic_iff,discrim.eq_1and 2 more74 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_map_splits_iff_isSquare {A : Type*} [CommRing A] {k : Type*} [Field k] [NeZero (2 : k)] (φ : A →+* k) (W : WeierstrassCurve A) (hc₄ : φ W.c₄ ≠ 0) : (W.nodePoly.map φ).Splits ↔ IsSquare (φ (-(W.c₄ * W.c₆))) := by … - lemma
WeierstrassCurve.nodePoly_map_splits_iff_of_two_eq_zeroSplit criterion (residue characteristic 2) line 157 sourceSource documentation
Split criterion (residue characteristic 2). Over a field
kof characteristic2, where the square-class criterionnodePoly_map_splits_iff_isSquarefails, the node polynomial splits exactly when its Artin–Schreier invariant lies in the image ofz ↦ z² + z. Herec₄andc₆are units, and separability (b² = -c₄ c₆ ≠ 0, since4 = 0) forces the linear coefficienta₁ c₄to be nonzero, sosplits_quadratic_iff_of_two_eq_zeroapplies.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Field,Eq,OfNat.ofNat,Nat,RingHom,WeierstrassCurve,Ne,WeierstrassCurve.c₄,WeierstrassCurve.c₆,Iff,Polynomial.Splits,Polynomial.map, WeierstrassCurve.nodePoly,Exists,HMul.hMul,HPow.hPow,WeierstrassCurve.a₁,HAdd.hAdd,Neg.negand 5 moreProof uses:
Mathlib.Tactic.LinearCombination.eq_of_eq,Mathlib.Tactic.LinearCombination.mul_const_eq,Mathlib.Tactic.LinearCombination.eq_rearrange,Mathlib.Tactic.Ring.of_eq,Mathlib.Tactic.Ring.Common.sub_congr,Nat.rawCast,Mathlib.Tactic.Ring.Common.add_congr,Mathlib.Tactic.Ring.cast_pos,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.cast_zero,Nat.cast_zero,Mathlib.Tactic.Ring.Common.add_mul,Mathlib.Tactic.Ring.Common.mul_zero,Mathlib.Tactic.Ring.Common.zero_mul,Mathlib.Tactic.Ring.Common.add_pf_zero_add,Mathlib.Tactic.Ring.Common.add_pf_add_zero,Mathlib.Tactic.Ring.Common.mul_addand 56 more102 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
lemma nodePoly_map_splits_iff_of_two_eq_zero {A : Type*} [CommRing A] {k : Type*} [Field k] (h2 : (2 : k) = 0) (φ : A →+* k) (W : WeierstrassCurve A) (hc₄ : φ W.c₄ ≠ 0) (hc₆ : φ W.c₆ ≠ 0) : (W.nodePoly.map φ).Splits ↔ ∃ z, φ (W.a₁ * W.c₄) ^ 2 * (z ^ 2 + z) = φ W.c₄ * (-φ (54 * W.b₆ - 3 * W.b₂ * W.b₄ + W.a₂ * W.c₄)) := by … - lemma
WeierstrassCurve.integralModel_baseChangeThe integral model of the base change toKof an integral Weierstrass curveWoverRisWitself (integral models are unique, asR → Kis injective) line 176 sourceSource documentation
The integral model of the base change to
Kof an integral Weierstrass curveWoverRisWitself (integral models are unique, asR → Kis injective).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,WeierstrassCurve,WeierstrassCurve.IsIntegral,WeierstrassCurve.baseChange,Eq,WeierstrassCurve.integralModelProof uses:
WeierstrassCurve.ext,IsFractionRing.injective,WeierstrassCurve.a₁,of_eq_true,RingHom,Algebra.algebraMap,Eq.trans,True,congrFun',congrArg,WeierstrassCurve.map,id,Eq.refl,WeierstrassCurve.integralModel_a₁_eq,WeierstrassCurve.map_a₁,eq_self,WeierstrassCurve.a₂,WeierstrassCurve.integralModel_a₂_eq,WeierstrassCurve.map_a₂,WeierstrassCurve.a₃and 8 more14 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
lemma integralModel_baseChange (W : WeierstrassCurve R) [IsIntegral R (W⁄K)] : integralModel R (W⁄K) = W := by … - theorem
WeierstrassCurve.HasSplitMultiplicativeReduction.baseChange_smulSplit multiplicative reduction is a change-of-variables invariant line 190 sourceSource documentation
Split multiplicative reduction is a change-of-variables invariant. If
W(overR) gives a curve with split multiplicative reduction overK, then so does anyR-change of variablesC • Wthat still has multiplicative reduction — because the split condition is the splitting of the node polynomial of the integral model, which is invariant bynodePoly_map_splits_smul_iff.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.VariableChange,WeierstrassCurve.IsMinimal,WeierstrassCurve.baseChange,WeierstrassCurve.HasSplitMultiplicativeReduction,WeierstrassCurve.HasMultiplicativeReduction,HSMul.hSMulProof uses:
Polynomial.Splits,IsLocalRing.ResidueField,Polynomial.map,Algebra.algebraMap,HSub.hSub,Polynomial,HAdd.hAdd,HMul.hMul,RingHom,Polynomial.C,WeierstrassCurve.c₄,WeierstrassCurve.integralModel,HPow.hPow,Nat,Polynomial.X,OfNat.ofNat,WeierstrassCurve.a₁,WeierstrassCurve.b₆,WeierstrassCurve.b₂,WeierstrassCurve.b₄and 12 more49 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
theorem HasSplitMultiplicativeReduction.baseChange_smul {W : WeierstrassCurve R} (C : VariableChange R) [IsMinimal R (W⁄K)] (hW : (W⁄K).HasSplitMultiplicativeReduction R) [((C • W)⁄K).HasMultiplicativeReduction R] : ((C • W)⁄K).HasSplitMultiplicativeReduction R := by … - lemma
WeierstrassCurve.residue_integralModel_c₄_ne_zeroMultiplicative reduction forcesc₄of the integral model to be a unit: its residue is nonzero (valuation c₄ = 1meansc₄ ∉ maximalIdeal) line 204 sourceSource documentation
Multiplicative reduction forces
c₄of the integral model to be a unit: its residue is nonzero (valuation c₄ = 1meansc₄ ∉ maximalIdeal).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Ne,IsLocalRing.ResidueField,RingHom,IsLocalRing.residue,WeierstrassCurve.c₄,WeierstrassCurve.integralModel,OfNat.ofNatProof uses:
Eq.mpr,Not,Eq,id,congrArg,Ne.eq_1,Membership.mem,Ideal,IsLocalRing.maximalIdeal,propext,IsLocalRing.residue_eq_zero_iff,WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.HasMultiplicativeReduction.multiplicativeReduction,Eq.mp,Algebra.algebraMapand 4 more56 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
lemma residue_integralModel_c₄_ne_zero [E.HasMultiplicativeReduction R] : residue R ((E.integralModel R).c₄) ≠ 0 := by … - lemma
WeierstrassCurve.residue_integralModel_Δ_eq_zeroMultiplicative reduction (bad reduction) means the discriminant of the integral model has zero residue line 214 sourceSource documentation
Multiplicative reduction (bad reduction) means the discriminant of the integral model has zero residue.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Eq,IsLocalRing.ResidueField,RingHom,IsLocalRing.residue,WeierstrassCurve.Δ,WeierstrassCurve.integralModel,OfNat.ofNatProof uses:
Eq.mpr,Membership.mem,Ideal,IsLocalRing.maximalIdeal,id,congrArg,propext,IsLocalRing.residue_eq_zero_iff,LT.lt,WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.HasMultiplicativeReduction.badReduction,Eq.mp,IsDedekindDomain.HeightOneSpectrum.asIdeal,IsDedekindDomain.HeightOneSpectrum.valuation_lt_one_iff_mem,Algebra.algebraMapand 2 more61 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
lemma residue_integralModel_Δ_eq_zero [E.HasMultiplicativeReduction R] : residue R ((E.integralModel R).Δ) = 0 := by … - lemma
WeierstrassCurve.residue_integralModel_c₆_ne_zeroMultiplicative reduction forcesc₆of the integral model to be a unit too: from1728 Δ = c₄³ - c₆²andΔ ≡ 0,c₆² ≡ c₄³ ≢ 0line 224 sourceSource documentation
Multiplicative reduction forces
c₆of the integral model to be a unit too: from1728 Δ = c₄³ - c₆²andΔ ≡ 0,c₆² ≡ c₄³ ≢ 0.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Ne,IsLocalRing.ResidueField,RingHom,IsLocalRing.residue,WeierstrassCurve.c₆,WeierstrassCurve.integralModel,OfNat.ofNatProof uses:
Eq, WeierstrassCurve.residue_integralModel_c₄_ne_zero,HPow.hPow,Nat,HSub.hSub,WeierstrassCurve.c₄,HMul.hMul,WeierstrassCurve.Δ,congrArg,WeierstrassCurve.c_relation,Mathlib.Tactic.LinearCombination.eq_of_eq,Eq.mp,congr,Eq.trans,map_mul,congrFun',map_ofNat,map_sub,map_pow,Mathlib.Tactic.LinearCombination.eq_rearrangeand 65 more87 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
lemma residue_integralModel_c₆_ne_zero [E.HasMultiplicativeReduction R] : residue R ((E.integralModel R).c₆) ≠ 0 := by … - lemma
WeierstrassCurve.not_splits_nodePoly_of_not_hasSplitNonsplit multiplicative reduction means precisely that the node polynomial of the integral model does not split over the residue field line 239 sourceSource documentation
Nonsplit multiplicative reduction means precisely that the node polynomial of the integral model does not split over the residue field.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Not,WeierstrassCurve.HasSplitMultiplicativeReduction,Polynomial.Splits,IsLocalRing.ResidueField,Polynomial.map,Algebra.algebraMap, WeierstrassCurve.nodePoly,WeierstrassCurve.integralModelProof uses:
WeierstrassCurve.HasSplitMultiplicativeReduction.mk20 instances, coercions and auxiliary constants left out.
lemma not_splits_nodePoly_of_not_hasSplit [E.HasMultiplicativeReduction R] (h : ¬ E.HasSplitMultiplicativeReduction R) : ¬ ((E.integralModel R).nodePoly.map (algebraMap R (ResidueField R))).Splits := … - lemma
WeierstrassCurve.natDegree_nodePoly_mapThe node polynomial over the residue field is a genuine quadratic (leading coefficientc₄is a unit) line 247 sourceSource documentation
The node polynomial over the residue field is a genuine quadratic (leading coefficient
c₄is a unit).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Eq,Nat,Polynomial.natDegree,IsLocalRing.ResidueField,Polynomial.map,Algebra.algebraMap, WeierstrassCurve.nodePoly,WeierstrassCurve.integralModel,OfNat.ofNatProof uses:
Ne,RingHom,WeierstrassCurve.c₄,Eq.mpr,IsLocalRing.residue,id,congrArg,IsLocalRing.ResidueField.algebraMap_eq, WeierstrassCurve.residue_integralModel_c₄_ne_zero,HAdd.hAdd,Polynomial,HMul.hMul,Polynomial.C,HPow.hPow,Polynomial.X,WeierstrassCurve.a₁,Neg.neg,HSub.hSub,WeierstrassCurve.b₆,WeierstrassCurve.b₂and 4 more58 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
lemma natDegree_nodePoly_map [E.HasMultiplicativeReduction R] : ((E.integralModel R).nodePoly.map (algebraMap R (ResidueField R))).natDegree = 2 := by … - lemma
WeierstrassCurve.irreducible_nodePoly_mapFor nonsplit multiplicative reduction, the node polynomial is irreducible over the residue field: it is a quadratic that does not split, so (over a field) it has no linear factors line 257 sourceSource documentation
For nonsplit multiplicative reduction, the node polynomial is irreducible over the residue field: it is a quadratic that does not split, so (over a field) it has no linear factors.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Not,WeierstrassCurve.HasSplitMultiplicativeReduction,Irreducible,Polynomial,IsLocalRing.ResidueField,Polynomial.map,Algebra.algebraMap, WeierstrassCurve.nodePoly,WeierstrassCurve.integralModelProof uses:
Eq.mpr,id,Eq,congrArg,rfl,Polynomial.Splits, WeierstrassCurve.not_splits_nodePoly_of_not_hasSplit,Nat,Polynomial.natDegree,OfNat.ofNat, WeierstrassCurve.natDegree_nodePoly_map,Ne,False.elim,False,Eq.mp,Eq.trans,congrFun',Eq.symm,Irreducible.mk,Polynomial.not_isUnit_of_natDegree_posand 25 more62 instances, coercions and auxiliary constants left out.
Tactic trace: 23 steps
Open to load the checked before-and-after goal states.
lemma irreducible_nodePoly_map [E.HasMultiplicativeReduction R] (h : ¬ E.HasSplitMultiplicativeReduction R) : Irreducible ((E.integralModel R).nodePoly.map (algebraMap R (ResidueField R))) := by … - lemma
WeierstrassCurve.separable_nodePoly_mapDocumented declaration: separable_nodePoly_map line 283 sourceSource documentation
For multiplicative reduction the node polynomial is separable over the residue field: its discriminant is
-c₄ c₆(splitPolynomial_discrim), a unit, so the quadratic-separability criterionPolynomial.separable_quadratic_iffapplies.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,WeierstrassCurve,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve.HasMultiplicativeReduction,Polynomial.Separable,IsLocalRing.ResidueField,Polynomial.map,Algebra.algebraMap, WeierstrassCurve.nodePoly,WeierstrassCurve.integralModelProof uses:
Ne,RingHom,WeierstrassCurve.c₄,OfNat.ofNat,Eq.mpr,IsLocalRing.residue,id,Eq,congrArg,IsLocalRing.ResidueField.algebraMap_eq, WeierstrassCurve.residue_integralModel_c₄_ne_zero,HAdd.hAdd,Polynomial,HMul.hMul,Polynomial.C,HPow.hPow,Nat,Polynomial.X,WeierstrassCurve.a₁,Neg.negand 17 more70 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
lemma separable_nodePoly_map [E.HasMultiplicativeReduction R] : ((E.integralModel R).nodePoly.map (algebraMap R (ResidueField R))).Separable := by … - theorem
WeierstrassCurve.isMinimal_of_valuation_c₄_eq_oneMinimality criterion line 305 sourceSource documentation
Minimality criterion. An integral Weierstrass equation over
Kwhosec₄is a unit ofR(equivalently,valuation c₄ = 1) is already minimal: any change of variablesCkeeping the equation integral must havevaluation C.u ≥ 1(elsevaluation (C • W).c₄ = valuation C.u⁻⁴ > 1, contradicting integrality), sovaluation (C • W).Δ = valuation C.u⁻¹² · valuation W.Δ ≤ valuation W.Δ. This is the tool that shows the twistWwe build is minimal without minimising by hand.This is the unit-
c₄case of the Kraus–Laska criterion: the special case "v(c₄) < 4orv(Δ) < 12implies minimal" of Silverman, The Arithmetic of Elliptic Curves, Remark VII.1.1, restricted tov(c₄) = 0. The hypothesis is stated at the field level — via the adic valuation ofW.c₄ : K— to match mathlib's phrasing ofWeierstrassCurve.HasMultiplicativeReduction, whosemultiplicativeReductionfield is exactly(maximalIdeal R).valuation K W.c₄ = 1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsIntegral,Eq,WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.c₄,OfNat.ofNat,WeierstrassCurve.IsMinimalProof uses:
WeierstrassCurve.IsMinimal.mk,And.intro,WeierstrassCurve.VariableChange,HSMul.hSMul,LE.le,Subtype,WeierstrassCurve.valuation_Δ_aux,Eq.mpr,id,congrArg,one_smul,WeierstrassCurve.Δ,Eq.trans,WeierstrassCurve.valuation_Δ_aux.congr_simp,congr,WeierstrassCurve.valuation_Δ_aux_eq_of_isIntegral,RingHom,Algebra.algebraMap,WeierstrassCurve.integralModel,congrFun'and 27 more141 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
theorem isMinimal_of_valuation_c₄_eq_one (W : WeierstrassCurve K) [IsIntegral R W] (hc₄ : valuation K (maximalIdeal R) W.c₄ = 1) : IsMinimal R W := by … - theorem
WeierstrassCurve.valuation_Δ_aux_smul_leFor a minimal Weierstrass modelW, no integral change of variables increases the valuation of the discriminant line 319 sourceSource documentation
For a minimal Weierstrass model
W, no integral change of variables increases the valuation of the discriminant.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsMinimal,WeierstrassCurve.VariableChange,WeierstrassCurve.IsIntegral,HSMul.hSMul,LE.le,Subtype,WithZero,Multiplicative,Int,OfNat.ofNat,WeierstrassCurve.valuation_Δ_auxProof uses:
Or.elim,le_total,And.right,WeierstrassCurve.IsMinimal.val_Δ_maximal,id44 instances, coercions and auxiliary constants left out.
theorem valuation_Δ_aux_smul_le {W : WeierstrassCurve K} [hm : IsMinimal R W] (D : VariableChange K) (hint : IsIntegral R (D • W)) : valuation_Δ_aux R (D • W) ≤ valuation_Δ_aux R ((1 : VariableChange K) • W) := … - theorem
WeierstrassCurve.valuation_Δ_eq_of_isMinimal_smulTwo minimal Weierstrass models related by a change of variables have the same valuation of the discriminant line 328 sourceSource documentation
Two minimal Weierstrass models related by a change of variables have the same valuation of the discriminant.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsMinimal,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul,WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.ΔProof uses:
Eq.mpr,LE.le,OfNat.ofNat,WeierstrassCurve.valuation_Δ_aux,id,congrArg,Eq.symm,WeierstrassCurve.valuation_Δ_aux_eq_of_isIntegral,le_antisymm,Iff.mpr,Subtype,Subtype.coe_le_coe, WeierstrassCurve.valuation_Δ_aux_smul_le,WeierstrassCurve.IsIntegral,inferInstance,Eq.mp,one_smul,Inv.inv,inv_smul_smul,Eq.refl83 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
theorem valuation_Δ_eq_of_isMinimal_smul {W₁ W₂ : WeierstrassCurve K} [IsMinimal R W₁] [IsMinimal R W₂] (D : VariableChange K) (hD : D • W₁ = W₂) : valuation K (maximalIdeal R) W₂.Δ = valuation K (maximalIdeal R) W₁.Δ := by … - theorem
WeierstrassCurve.valuation_u_eq_one_of_isMinimal_smulDocumented declaration: valuation_u_eq_one_of_isMinimal_smul line 344 sourceSource documentation
The scaling factor of a change of variables between two minimal models of an elliptic curve has valuation
1: the valuations of the discriminants agree and differ by a factorv(u)⁻¹².standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsMinimal,WeierstrassCurve.IsElliptic,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul,WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.VariableChange.u,OfNat.ofNatProof uses:
Ne,WeierstrassCurve.Δ,Iff.mpr,Valuation.ne_zero_iff,IsUnit.ne_zero,WeierstrassCurve.isUnit_Δ,HPow.hPow,Nat,HMul.hMul,Inv.inv,Eq.mpr,Units,id,Eq.rec,Eq.refl,Eq.trans,congrArg,Eq.symm, WeierstrassCurve.valuation_Δ_eq_of_isMinimal_smul,WeierstrassCurve.variableChange_Δand 16 more170 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
theorem valuation_u_eq_one_of_isMinimal_smul {W₁ W₂ : WeierstrassCurve K} [IsMinimal R W₁] [IsMinimal R W₂] [W₁.IsElliptic] (D : VariableChange K) (hD : D • W₁ = W₂) : valuation K (maximalIdeal R) ↑D.u = 1 := by … - theorem
WeierstrassCurve.exists_variableChange_baseChange_eq_of_smul_eqDocumented declaration: exists_variableChange_baseChange_eq_of_smul_eq line 364 sourceSource documentation
A change of variables
Drelating two integral Weierstrass models whose scaling factorD.uis the image of a unit ofRis itself defined overR:r,s,tare integral overR— roots of monic polynomials obtained from the change-of-variables formulas for theb₆/b₈/a₂/a₆-invariants — hence lie inRsinceRis integrally closed.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsIntegral,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul,Units,RingHom,Algebra.algebraMap,WeierstrassCurve.VariableChange.u,Exists,WeierstrassCurve.VariableChange.baseChangeProof uses:
Ne,OfNat.ofNat,Units.ne_zero,HMul.hMul,HPow.hPow,Nat,WeierstrassCurve.b₆,HAdd.hAdd,WeierstrassCurve.VariableChange.r,WeierstrassCurve.b₄,WeierstrassCurve.b₂,Eq.mpr,id,congrArg,Eq.symm,Inv.inv,WeierstrassCurve.variableChange_b₆,congrFun',Units.val_inv_eq_inv_val,inferInstanceand 175 more198 instances, coercions and auxiliary constants left out.
Tactic trace: 36 steps
Open to load the checked before-and-after goal states.
theorem exists_variableChange_baseChange_eq_of_smul_eq {W₁ W₂ : WeierstrassCurve K} [IsIntegral R W₁] [IsIntegral R W₂] (D : VariableChange K) (hD : D • W₁ = W₂) (u₀ : Rˣ) (hau : algebraMap R K ↑u₀ = ↑D.u) : ∃ C₀ : VariableChange R, C₀.baseChange K = D := by … - theorem
WeierstrassCurve.HasSplitMultiplicativeReduction.of_isMinimal_smulSplit multiplicative reduction is an isomorphism invariant of minimal models line 434 sourceSource documentation
Split multiplicative reduction is an isomorphism invariant of minimal models. If two minimal Weierstrass models
W₁,W₂of an elliptic curve overKare related by a change of variables (D • W₁ = W₂), andW₁has split multiplicative reduction, then so doesW₂.This is a form of Silverman VII.1.3(b) (uniqueness of minimal models over a discrete valuation ring): the change
Dhasu ∈ Rˣ(valuation_u_eq_one_of_isMinimal_smul), so it is defined overR(exists_variableChange_baseChange_eq_of_smul_eq); then the node polynomial's splitting transfers bynodePoly_map_splits_smul_iff.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,CommRing,Algebra,IsFractionRing,IsDomain,IsDiscreteValuationRing,WeierstrassCurve,WeierstrassCurve.IsMinimal,WeierstrassCurve.IsElliptic,WeierstrassCurve.VariableChange,Eq,HSMul.hSMul,WeierstrassCurve.HasSplitMultiplicativeReductionProof uses:
WithZero,Multiplicative,Int,Valuation,IsDedekindDomain.HeightOneSpectrum.valuation,IsDiscreteValuationRing.maximalIdeal,WeierstrassCurve.VariableChange.u,OfNat.ofNat, WeierstrassCurve.valuation_u_eq_one_of_isMinimal_smul,Units,RingHom,Algebra.algebraMap,Exists, exists_algebraMap_unit_eq_of_valuation_eq_one,WeierstrassCurve.VariableChange.baseChange, WeierstrassCurve.exists_variableChange_baseChange_eq_of_smul_eq,WeierstrassCurve.baseChange,WeierstrassCurve.integralModel,Eq.mpr,WeierstrassCurve.mapand 53 more126 instances, coercions and auxiliary constants left out.
Tactic trace: 21 steps
Open to load the checked before-and-after goal states.
theorem HasSplitMultiplicativeReduction.of_isMinimal_smul {W₁ W₂ : WeierstrassCurve K} [IsMinimal R W₁] [IsMinimal R W₂] [W₁.IsElliptic] (D : VariableChange K) (hD : D • W₁ = W₂) (h₁ : W₁.HasSplitMultiplicativeReduction R) : W₂.HasSplitMultiplicativeReduction R := by …