Building a homomorphism from a ternary relation #
Mathlib builds a MonoidHom out of a bare map from the two-variable identities
f (x * y) = f x * f y (MonoidHom.mk') and f (x * y⁻¹) = f x * (f y)⁻¹
(MonoidHom.ofMapMulInv). Some maps are not naturally presented that way: they are defined by a
symmetric ternary condition, and what one can prove about them directly is that they send triples
with product 1 to triples with product 1. The motivating example is the descent map on an
elliptic curve, whose defining property is that the classes of three collinear points multiply to
1 — collinearity being symmetric in the three points, whereas the group law is not.
Main results #
MonoidHom.ofMapMulMulEqOne: a map of groups withf 1 = 1that sends triples with product1to triples with product1is a homomorphism, andMonoidHom.coe_ofMapMulMulEqOnesays it is the original map. The additive versions are generated byto_additive.
Provenance #
Adapted, with the author's proof, from Michael Stoll's EllipticCurves project
(github.com/MichaelStollBayreuth/EllipticCurves, Apache-2.0, pinned by
TauCetiRoadmap/EllipticCurves/README.md at 66889eada51a), EllipticCurves/Mathlib/Basic.lean.
A map f between groups with f 1 = 1 that sends triples with product 1 to triples
with product 1 is a homomorphism. Useful when a map is naturally defined via a symmetric
ternary relation, like collinearity on a cubic curve.
Equations
- MonoidHom.ofMapMulMulEqOne hf₁ hf = MonoidHom.ofMapMulInv f ⋯
Instances For
A map f between additive groups with f 0 = 0 that sends triples with
sum 0 to triples with sum 0 is a homomorphism. Useful when a map is naturally defined via
a symmetric ternary relation, like collinearity on a cubic curve.