Commit 2024-11-29 22:48 cee87aa2

View on Github →

refactor(AlgebraicGeometry/EllipticCurve/*): add WeierstrassCurve.IsElliptic and remove EllipticCurve (#18531) The original EllipticCurve is WeierstrassCurve bundled with Δ' : Rˣ and a proof that Δ' = Δ. This definition makes Δ' and j computable, but at the expense that some APIs must be duplicated for EllipticCurve and WeierstrassCurve. This PR adds the typeclass WeierstrassCurve.IsElliptic which asserts that IsUnit W.Δ, and which is a Prop. The old API for elliptic curves are replaced by a WeierstrassCurve W together with [W.IsElliptic]. The caveat is that Δ' and j becomes noncomputable. The original design of this PR is WeierstrassCurve.Elliptic which is Invertible W.Δ, and which is a Type. By this design Δ' and j remain computable. But this design makes simpNF linter timeout. So this design is abandoned and replaced by current design. Also rename J.lean -> IsomOfJ.lean and split ModelsWithJ.lean.

Estimated changes

deleted theorem EllipticCurve.coe_map_Δ'
deleted theorem EllipticCurve.ext
deleted def EllipticCurve.j
deleted theorem EllipticCurve.j_eq_zero
deleted def EllipticCurve.map
deleted theorem EllipticCurve.map_j
deleted def EllipticCurve.ofJ'
deleted theorem EllipticCurve.ofJ'_j
deleted def EllipticCurve.ofJ0
deleted theorem EllipticCurve.ofJ0_j
deleted theorem EllipticCurve.ofJ1728_j
deleted def EllipticCurve.ofJ
deleted theorem EllipticCurve.ofJ_j
deleted structure EllipticCurve
added theorem WeierstrassCurve.map_j
deleted theorem WeierstrassCurve.ofJ0_Δ
deleted theorem WeierstrassCurve.ofJ_c₄
deleted theorem WeierstrassCurve.ofJ_Δ