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.