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.