More operations on WithOne and WithZero #
This file defines various bundled morphisms on WithOne and WithZero
that were not available in Algebra/Group/WithOne/Defs.
Main definitions #
@[implicit_reducible]
@[implicit_reducible]
WithOne.coe as a bundled morphism
Instances For
WithZero.coe as a bundled morphism
Instances For
@[simp]
@[simp]
Lift a semigroup homomorphism f to a bundled monoid homomorphism.
Instances For
Lift an additive semigroup homomorphism f to a bundled additive monoid homomorphism.
Instances For
@[simp]
theorem
WithOne.lift_coe
{α : Type u}
{β : Type v}
[Mul α]
[MulOneClass β]
(f : α →ₙ* β)
(x : α)
:
(lift f) ↑x = f x
@[simp]
theorem
WithZero.lift_coe
{α : Type u}
{β : Type v}
[Add α]
[AddZeroClass β]
(f : α →ₙ+ β)
(x : α)
:
(lift f) ↑x = f x
@[simp]
theorem
WithOne.lift_one
{α : Type u}
{β : Type v}
[Mul α]
[MulOneClass β]
(f : α →ₙ* β)
:
(lift f) 1 = 1
@[simp]
theorem
WithZero.lift_zero
{α : Type u}
{β : Type v}
[Add α]
[AddZeroClass β]
(f : α →ₙ+ β)
:
(lift f) 0 = 0
theorem
WithOne.lift_unique
{α : Type u}
{β : Type v}
[Mul α]
[MulOneClass β]
(f : WithOne α →* β)
:
theorem
WithZero.lift_unique
{α : Type u}
{β : Type v}
[Add α]
[AddZeroClass β]
(f : WithZero α →+ β)
:
@[simp]
theorem
WithOne.lift_symm_apply
{α : Type u}
{β : Type v}
[Mul α]
[MulOneClass β]
(f : WithOne α →* β)
(x : α)
:
@[simp]
theorem
WithZero.lift_symm_apply
{α : Type u}
{β : Type v}
[Add α]
[AddZeroClass β]
(f : WithZero α →+ β)
(x : α)
:
@[simp]
theorem
WithOne.mapMulHom_coe
{α : Type u}
{β : Type v}
[Mul α]
[Mul β]
(f : α →ₙ* β)
(a : α)
:
(mapMulHom f) ↑a = ↑(f a)
@[simp]
theorem
WithZero.mapAddHom_coe
{α : Type u}
{β : Type v}
[Add α]
[Add β]
(f : α →ₙ+ β)
(a : α)
:
(mapAddHom f) ↑a = ↑(f a)
@[simp]
theorem
WithOne.mapMulHom_id
{α : Type u}
[Mul α]
:
mapMulHom (MulHom.id α) = MonoidHom.id (WithOne α)
@[simp]
theorem
WithZero.mapAddHom_id
{α : Type u}
[Add α]
:
mapAddHom (AddHom.id α) = AddMonoidHom.id (WithZero α)
theorem
WithOne.mapMulHom_injective
{α : Type u}
{β : Type v}
[Mul α]
[Mul β]
{f : α →ₙ* β}
(hf : Function.Injective ⇑f)
:
Function.Injective ⇑(mapMulHom f)
theorem
WithZero.mapAddHom_injective
{α : Type u}
{β : Type v}
[Add α]
[Add β]
{f : α →ₙ+ β}
(hf : Function.Injective ⇑f)
:
Function.Injective ⇑(mapAddHom f)
theorem
WithOne.mapMulHom_injective'
{α : Type u}
{β : Type v}
[Mul α]
[Mul β]
:
Function.Injective mapMulHom
theorem
WithZero.mapAddHom_injective'
{α : Type u}
{β : Type v}
[Add α]
[Add β]
:
Function.Injective mapAddHom
@[simp]
@[simp]
A version of Equiv.optionCongr for WithOne.
Instances For
A version of Equiv.optionCongr for WithZero.
Instances For
@[simp]
theorem
MulEquiv.withOneCongr_apply
{α : Type u}
{β : Type v}
[Mul α]
[Mul β]
(e : α ≃* β)
(a : WithOne α)
:
e.withOneCongr a = (WithOne.mapMulHom e.toMulHom) a
@[simp]
theorem
AddEquiv.withZeroCongr_apply
{α : Type u}
{β : Type v}
[Add α]
[Add β]
(e : α ≃+ β)
(a : WithZero α)
:
e.withZeroCongr a = (WithZero.mapAddHom e.toAddHom) a
@[simp]
@[simp]
theorem
AddEquiv.withZeroCongr_refl
{α : Type u}
[Add α]
:
(refl α).withZeroCongr = refl (WithZero α)
@[simp]
theorem
MulEquiv.withOneCongr_symm
{α : Type u}
{β : Type v}
[Mul α]
[Mul β]
(e : α ≃* β)
:
e.withOneCongr.symm = e.symm.withOneCongr
@[simp]
theorem
AddEquiv.withZeroCongr_symm
{α : Type u}
{β : Type v}
[Add α]
[Add β]
(e : α ≃+ β)
:
e.withZeroCongr.symm = e.symm.withZeroCongr
@[simp]
theorem
MulEquiv.withOneCongr_trans
{α : Type u}
{β : Type v}
{γ : Type w}
[Mul α]
[Mul β]
[Mul γ]
(e₁ : α ≃* β)
(e₂ : β ≃* γ)
:
e₁.withOneCongr.trans e₂.withOneCongr = (e₁.trans e₂).withOneCongr
@[simp]
theorem
AddEquiv.withZeroCongr_trans
{α : Type u}
{β : Type v}
{γ : Type w}
[Add α]
[Add β]
[Add γ]
(e₁ : α ≃+ β)
(e₂ : β ≃+ γ)
:
e₁.withZeroCongr.trans e₂.withZeroCongr = (e₁.trans e₂).withZeroCongr