Extensionality lemmas for monoid and group structures #
In this file we prove extensionality lemmas for Monoid
and higher algebraic structures with one
binary operation. Extensionality lemmas for structures that are lower in the hierarchy can be found
in Algebra.Group.Defs
.
Implementation details #
To get equality of npow
etc, we define a monoid homomorphism between two monoid structures on the
same type, then apply lemmas like MonoidHom.map_div
, MonoidHom.map_pow
etc.
To refer to the *
operator of a particular instance i
, we use
(letI := i; HMul.hMul : M → M → M)
instead of i.mul
(which elaborates to Mul.mul
), as the
former uses HMul.hMul
which is the canonical spelling.
Tags #
monoid, group, extensionality
theorem
AddCommMonoid.ext
{M : Type u_1}
⦃m₁ : AddCommMonoid M⦄
⦃m₂ : AddCommMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
:
m₁ = m₂
theorem
CommMonoid.ext
{M : Type u_1}
⦃m₁ : CommMonoid M⦄
⦃m₂ : CommMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
:
m₁ = m₂
theorem
AddLeftCancelMonoid.ext
{M : Type u}
⦃m₁ : AddLeftCancelMonoid M⦄
⦃m₂ : AddLeftCancelMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
:
m₁ = m₂
theorem
LeftCancelMonoid.ext
{M : Type u}
⦃m₁ : LeftCancelMonoid M⦄
⦃m₂ : LeftCancelMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
:
m₁ = m₂
theorem
AddRightCancelMonoid.ext
{M : Type u}
⦃m₁ : AddRightCancelMonoid M⦄
⦃m₂ : AddRightCancelMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
:
m₁ = m₂
theorem
RightCancelMonoid.ext
{M : Type u}
⦃m₁ : RightCancelMonoid M⦄
⦃m₂ : RightCancelMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
:
m₁ = m₂
theorem
AddCancelMonoid.ext
{M : Type u_1}
⦃m₁ : AddCancelMonoid M⦄
⦃m₂ : AddCancelMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
:
m₁ = m₂
theorem
CancelMonoid.ext
{M : Type u_1}
⦃m₁ : CancelMonoid M⦄
⦃m₂ : CancelMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
:
m₁ = m₂
theorem
AddCancelCommMonoid.ext
{M : Type u_1}
⦃m₁ : AddCancelCommMonoid M⦄
⦃m₂ : AddCancelCommMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
:
m₁ = m₂
theorem
CancelCommMonoid.ext
{M : Type u_1}
⦃m₁ : CancelCommMonoid M⦄
⦃m₂ : CancelCommMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
:
m₁ = m₂
theorem
SubNegMonoid.ext
{M : Type u_1}
⦃m₁ : SubNegMonoid M⦄
⦃m₂ : SubNegMonoid M⦄
(h_mul : HAdd.hAdd = HAdd.hAdd)
(h_inv : Neg.neg = Neg.neg)
:
m₁ = m₂
theorem
DivInvMonoid.ext
{M : Type u_1}
⦃m₁ : DivInvMonoid M⦄
⦃m₂ : DivInvMonoid M⦄
(h_mul : HMul.hMul = HMul.hMul)
(h_inv : Inv.inv = Inv.inv)
:
m₁ = m₂
theorem
AddCommGroup.ext
{G : Type u_1}
⦃g₁ : AddCommGroup G⦄
⦃g₂ : AddCommGroup G⦄
(h_mul : Add.add = Add.add)
:
g₁ = g₂