Group instances for FunLike types #
In this file we define various instances related to groups for FunLike types.
For example given a FunLike F α β with IsMulApply F α β and Semigroup β, then F is naturally
a semigroup. Note that currently, these are not registered as instances, but only abbrevs to
avoid long typeclass searches.
Moreover, we define the homomorphism FunLike.coeMulHom : F →* α → β that acts by coercion. This
definition is mainly needed to define a module instance on F.
Coercion as a multiplicative homomorphism.
Equations
- FunLike.coeMulHom F α β = { toFun := fun (f : F) => ⇑f, map_mul' := ⋯ }
Instances For
Coercion as an additive homomorphism.
Equations
- FunLike.coeAddHom F α β = { toFun := fun (f : F) => ⇑f, map_add' := ⋯ }
Instances For
Coercion as a monoid homomorphism.
Equations
- FunLike.coeMonoidHom F α β = { toFun := fun (f : F) => ⇑f, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Coercion as an additive monoid homomorphism.
Equations
- FunLike.coeAddMonoidHom F α β = { toFun := fun (f : F) => ⇑f, map_zero' := ⋯, map_add' := ⋯ }
Instances For
A FunLike type that satisfies (f * g) x = f x * g x is a semigroup if β is a semigroup.
Equations
- FunLike.semigroup = Function.Injective.semigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x is an additive semigroup
if β is an additive semigroup.
Equations
- FunLike.addSemigroup = Function.Injective.addSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x is a commutative semigroup if β is a
commutative semigroup.
Equations
- FunLike.commSemigroup = Function.Injective.commSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x is a commatative additive
semigroup if β is a commatative additive semigroup.
Equations
- FunLike.addCommSemigroup = Function.Injective.addCommSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x has left cancellative multiplication if
β has left cancellative multiplication.
A FunLike type that satisfies (f + g) x = f x + g x has left cancellative
addition if β has left cancellative addition.
A FunLike type that satisfies (f * g) x = f x * g x has right cancellative multiplication if
β has right cancellative multiplication.
A FunLike type that satisfies (f + g) x = f x + g x has right cancellative
addition if β has right cancellative addition.
A FunLike type that satisfies (f * g) x = f x * g x has right multiplication if
β has right multiplication.
A FunLike type that satisfies (f + g) x = f x + g x has right
addition if β has cancellative addition.
A FunLike type that satisfies (f * g) x = f x * g x is a left cancel semigroup if β is a
left cancel semigroup.
Equations
- FunLike.leftCancelSemigroup = Function.Injective.leftCancelSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x is a left cancel additive
semigroup if β is a left cancel additive semigroup.
Equations
- FunLike.addLeftCancelSemigroup = Function.Injective.addLeftCancelSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x is a right cancel semigroup if β is a
right cancel semigroup.
Equations
- FunLike.rightCancelSemigroup = Function.Injective.rightCancelSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x is a right cancel additive
semigroup if β is a right cancel additive semigroup.
Equations
- FunLike.addRightCancelSemigroup = Function.Injective.addRightCancelSemigroup (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type with 1 and * is MulOneClass if β is a MulOneClass.
Equations
- FunLike.mulOneClass = Function.Injective.mulOneClass (fun (f : F) => ⇑f) ⋯ ⋯ ⋯
Instances For
A FunLike type with 0 and + is AddZeroClass if β is a
AddZeroClass.
Equations
- FunLike.addZeroClass = Function.Injective.addZeroClass (fun (f : F) => ⇑f) ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a monoid if β is a monoid.
Equations
- FunLike.monoid = Function.Injective.monoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is an additive monoid if β is an additive monoid.
Equations
- FunLike.addMonoid = Function.Injective.addMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a left cancel monoid if β is a left cancel monoid.
Equations
- FunLike.leftCancelMonoid = Function.Injective.leftCancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is a left cancel additive monoid if β is a left cancel additive monoid.
Equations
- FunLike.addLeftCancelMonoid = Function.Injective.addLeftCancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a right cancel monoid if β is a right cancel monoid.
Equations
- FunLike.rightCancelMonoid = Function.Injective.rightCancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is a right cancel additive monoid if β is a right cancel
additive monoid.
Equations
- FunLike.addRightCancelMonoid = Function.Injective.addRightCancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a cancel monoid if β is a cancel monoid.
Equations
- FunLike.cancelMonoid = Function.Injective.cancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is a cancel additive monoid if β is a cancel additive monoid.
Equations
- FunLike.addCancelMonoid = Function.Injective.addCancelMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a commutative monoid if β is a commutative monoid.
Equations
- FunLike.commMonoid = Function.Injective.commMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is a commutative additive monoid if β is a commutative additive monoid.
Equations
- FunLike.addCommMonoid = Function.Injective.addCommMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f * g) x = f x * g x, 1 x = 1, and (f ^ n) x = f x ^ n
is a cancel commutative monoid if β is a cancel commutative monoid.
Equations
- FunLike.cancelCommMonoid = Function.Injective.cancelCommMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type that satisfies (f + g) x = f x + g x, 0 x = 0, and
(n • f) x = n • f x is a cancel commutative additive monoid if β is a cancel commutative
additive monoid.
Equations
- FunLike.addCancelCommMonoid = Function.Injective.addCancelCommMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type with inverse that satisfies (f⁻¹) x = (f x)⁻¹ is an involutive inversion
if β is an involutive inversion.
Equations
- FunLike.involutiveInv = Function.Injective.involutiveInv (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type with negation that satisfies (- f) x = - (f x) is an involutive
negation if β is an involutive negation.
Equations
- FunLike.involutiveNeg = Function.Injective.involutiveNeg (fun (f : F) => ⇑f) ⋯ ⋯
Instances For
A FunLike type with 1 and inverse is an InvOneClass if β is an InvOneClass.
Equations
- FunLike.invOneClass = Function.Injective.invOneClass (fun (f : F) => ⇑f) ⋯ ⋯ ⋯
Instances For
A FunLike type with 0 and negation is a NegZeroClass if β is a
NegZeroClass.
Equations
- FunLike.negZeroClass = Function.Injective.negZeroClass (fun (f : F) => ⇑f) ⋯ ⋯ ⋯
Instances For
A FunLike type is a DivInvMonoid if β is a DivInvMonoid.
Equations
- FunLike.divInvMonoid = Function.Injective.divInvMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a SubNegMonoid if β is a SubNegMonoid.
Equations
- FunLike.subNegMonoid = Function.Injective.subNegMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a DivInvOneMonoid if β is a DivInvOneMonoid.
Equations
- FunLike.divInvOneMonoid = Function.Injective.divInvOneMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a SubNegOneMonoid if β is a SubNegOneMonoid.
Equations
- FunLike.subNegZeroMonoid = Function.Injective.subNegZeroMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a division monoid if β is a division monoid.
Equations
- FunLike.divisionMonoid = Function.Injective.divisionMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a subtraction monoid if β is a subtraction monoid.
Equations
- FunLike.subtractionMonoid = Function.Injective.subtractionMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a division commutative monoid if β is a division commutative monoid.
Equations
- FunLike.divisionCommMonoid = Function.Injective.divisionCommMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a subtraction commutative monoid if β
is a subtraction commutative monoid.
Equations
- FunLike.subtractionCommMonoid = Function.Injective.subtractionCommMonoid (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a group if β is a group.
Equations
- FunLike.group = Function.Injective.group (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is an additive group if β is an additive group.
Equations
- FunLike.addGroup = Function.Injective.addGroup (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is a commutative group if β is a commutative group.
Equations
- FunLike.commGroup = Function.Injective.commGroup (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Instances For
A FunLike type is an additive commutative group if β is an additive
commutative group.
Equations
- FunLike.addCommGroup = Function.Injective.addCommGroup (fun (f : F) => ⇑f) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯