Extensionality lemmas for rings and similar structures #
In this file we prove extensionality lemmas for the ring-like structures defined in
Mathlib/Algebra/Ring/Defs.lean, ranging from NonUnitalNonAssocSemiring to CommRing. These
extensionality lemmas take the form of asserting that two algebraic structures on a type are equal
whenever the addition and multiplication defined by them are both the same.
Implementation details #
We follow Mathlib/Algebra/Group/Ext.lean in using the term (letI := i; HMul.hMul : R → R → R) to
refer to the multiplication specified by a typeclass instance i on a type R (and similarly for
addition). We abbreviate these using some local notations.
Since Mathlib/Algebra/Group/Ext.lean proved several injectivity lemmas, we do so as well — even if
sometimes we don't need them to prove extensionality.
Tags #
semiring, ring, extensionality
Distrib #
NonUnitalNonAssocSemiring #
NonUnitalSemiring #
NonAssocSemiring and its ancestors #
This section also includes results for AddMonoidWithOne, AddCommMonoidWithOne, etc.
as these are considered implementation detail of the ring classes.
TODO consider relocating these lemmas.
The best place to prove that the NatCast is determined by the other operations is probably in
an extensionality lemma for AddMonoidWithOne, in which case we may as well do the typeclasses
defined in Mathlib/Algebra/GroupWithZero/Defs.lean as well.
NonUnitalNonAssocRing #
NonUnitalRing #
NonAssocRing and its ancestors #
This section also includes results for AddGroupWithOne, AddCommGroupWithOne, etc.
as these are considered implementation detail of the ring classes.
TODO consider relocating these lemmas.