Commit 2023-12-04 20:27 3399e7d9
View on Github →refactor(AlgebraicGeometry/EllipticCurve/*): split EllipticCurve.Point into two files (#8540)
Refactor the files in AlgebraicGeometry/EllipticCurve/* as follows:
Weierstrass.leancontains general definitions common to all Weierstrass and elliptic curves, namely quantities associated to their coefficients, variable and base changes, and models with prescribed j-invariants.Affine.leancontains definitions specific to Weierstrass curves written in affine coordinates, includingequationandnonsingularfrom the oldWeierstrass.lean, but also thePointinductive and group operations from the oldPoint.lean.Group.leancontains a standalone proof of the group law forPoint, including instances forCoordinateRingin the oldWeierstrass.lean, and ideal computations in itsClassGroupin the oldPoint.lean. This refactor is done in preparation for the newProjective.leanin #8485 (and the upcomingJacobian.lean), which shares all the general definitions inWeierstrass.lean, but none of those inAffine.leanandGroup.leanexcept their proofs (analogous lemmas are proven by "reducing to the affine case"). Most of the definitions and lemmas forequation,nonsingular,CoordinateRing, andClassGroupare specific to the affine representation of Weierstrass curves, so they are now in theWeierstrassCurve.Affinenamespace, which is just an abbreviation forWeierstrassCurve. Further documentation is added toGroup.leanto explain the argument for the group law, but otherwise few things are changed from the original files.