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.
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.