Instances and theorems on pi types #
This file provides instances for the typeclass defined in Algebra.Group.Defs. More sophisticated
instances are defined in Algebra.Group.Pi.Lemmas files elsewhere.
Porting note #
This file relied on the pi_instance tactic, which was not available at the time of porting. The
comment --pi_instance is inserted before all fields which were previously derived by
pi_instance. See this Zulip discussion:
[https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/not.20porting.20pi_instance]
instance Pi.isMulCommutative {I : Type u} {f : I → Type v₁} [(i : I) → Mul (f i)] [∀ (i : I), IsMulCommutative (f i)] :
IsMulCommutative ((i : I) → f i)
instance Pi.isAddCommutative {I : Type u} {f : I → Type v₁} [(i : I) → Add (f i)] [∀ (i : I), IsAddCommutative (f i)] :
IsAddCommutative ((i : I) → f i)
@[instance_reducible]
instance Pi.commMagma {I : Type u} {f : I → Type v₁} [(i : I) → CommMagma (f i)] :
CommMagma ((i : I) → f i)
Equations
- Pi.commMagma = { toMul := Pi.instMul, mul_comm := ⋯ }
@[instance_reducible]
instance Pi.addCommMagma {I : Type u} {f : I → Type v₁} [(i : I) → AddCommMagma (f i)] :
AddCommMagma ((i : I) → f i)
Equations
- Pi.addCommMagma = { toAdd := Pi.instAdd, add_comm := ⋯ }
@[instance_reducible]
instance Pi.semigroup {I : Type u} {f : I → Type v₁} [(i : I) → Semigroup (f i)] :
Semigroup ((i : I) → f i)
Equations
- Pi.semigroup = { toMul := Pi.instMul, mul_assoc := ⋯ }
@[instance_reducible]
instance Pi.addSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → AddSemigroup (f i)] :
AddSemigroup ((i : I) → f i)
Equations
- Pi.addSemigroup = { toAdd := Pi.instAdd, add_assoc := ⋯ }
@[instance_reducible]
instance Pi.commSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → CommSemigroup (f i)] :
CommSemigroup ((i : I) → f i)
Equations
- Pi.commSemigroup = { toSemigroup := Pi.semigroup, mul_comm := ⋯ }
@[instance_reducible]
instance Pi.addCommSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → AddCommSemigroup (f i)] :
AddCommSemigroup ((i : I) → f i)
Equations
- Pi.addCommSemigroup = { toAddSemigroup := Pi.addSemigroup, add_comm := ⋯ }
@[instance_reducible]
instance Pi.mulOneClass {I : Type u} {f : I → Type v₁} [(i : I) → MulOneClass (f i)] :
MulOneClass ((i : I) → f i)
Equations
- Pi.mulOneClass = { toOne := Pi.instOne, toMul := Pi.instMul, one_mul := ⋯, mul_one := ⋯ }
@[instance_reducible]
instance Pi.addZeroClass {I : Type u} {f : I → Type v₁} [(i : I) → AddZeroClass (f i)] :
AddZeroClass ((i : I) → f i)
Equations
- Pi.addZeroClass = { toZero := Pi.instZero, toAdd := Pi.instAdd, zero_add := ⋯, add_zero := ⋯ }
instance Pi.instIsDedekindFiniteMonoidForall {I : Type u} {f : I → Type v₁} [(i : I) → MulOneClass (f i)] [∀ (i : I), IsDedekindFiniteMonoid (f i)] :
IsDedekindFiniteMonoid ((i : I) → f i)
instance Pi.instIsDedekindFiniteAddMonoidForall {I : Type u} {f : I → Type v₁} [(i : I) → AddZeroClass (f i)] [∀ (i : I), IsDedekindFiniteAddMonoid (f i)] :
IsDedekindFiniteAddMonoid ((i : I) → f i)
@[instance_reducible]
instance Pi.invOneClass {I : Type u} {f : I → Type v₁} [(i : I) → InvOneClass (f i)] :
InvOneClass ((i : I) → f i)
Equations
- Pi.invOneClass = { toOne := Pi.instOne, toInv := Pi.instInv, inv_one := ⋯ }
@[instance_reducible]
instance Pi.negZeroClass {I : Type u} {f : I → Type v₁} [(i : I) → NegZeroClass (f i)] :
NegZeroClass ((i : I) → f i)
Equations
- Pi.negZeroClass = { toZero := Pi.instZero, toNeg := Pi.instNeg, neg_zero := ⋯ }
@[instance_reducible]
instance Pi.commMonoid {I : Type u} {f : I → Type v₁} [(i : I) → CommMonoid (f i)] :
CommMonoid ((i : I) → f i)
Equations
- Pi.commMonoid = { toMonoid := Pi.monoid, mul_comm := ⋯ }
@[instance_reducible]
instance Pi.addCommMonoid {I : Type u} {f : I → Type v₁} [(i : I) → AddCommMonoid (f i)] :
AddCommMonoid ((i : I) → f i)
Equations
- Pi.addCommMonoid = { toAddMonoid := Pi.addMonoid, add_comm := ⋯ }
@[instance_reducible]
instance Pi.divInvMonoid {I : Type u} {f : I → Type v₁} [(i : I) → DivInvMonoid (f i)] :
DivInvMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.subNegMonoid {I : Type u} {f : I → Type v₁} [(i : I) → SubNegMonoid (f i)] :
SubNegMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.divInvOneMonoid {I : Type u} {f : I → Type v₁} [(i : I) → DivInvOneMonoid (f i)] :
DivInvOneMonoid ((i : I) → f i)
Equations
- Pi.divInvOneMonoid = { toDivInvMonoid := Pi.divInvMonoid, inv_one := ⋯ }
@[instance_reducible]
instance Pi.subNegZeroMonoid {I : Type u} {f : I → Type v₁} [(i : I) → SubNegZeroMonoid (f i)] :
SubNegZeroMonoid ((i : I) → f i)
Equations
- Pi.subNegZeroMonoid = { toSubNegMonoid := Pi.subNegMonoid, neg_zero := ⋯ }
@[instance_reducible]
instance Pi.involutiveInv {I : Type u} {f : I → Type v₁} [(i : I) → InvolutiveInv (f i)] :
InvolutiveInv ((i : I) → f i)
Equations
- Pi.involutiveInv = { toInv := Pi.instInv, inv_inv := ⋯ }
@[instance_reducible]
instance Pi.involutiveNeg {I : Type u} {f : I → Type v₁} [(i : I) → InvolutiveNeg (f i)] :
InvolutiveNeg ((i : I) → f i)
Equations
- Pi.involutiveNeg = { toNeg := Pi.instNeg, neg_neg := ⋯ }
@[instance_reducible]
instance Pi.divisionMonoid {I : Type u} {f : I → Type v₁} [(i : I) → DivisionMonoid (f i)] :
DivisionMonoid ((i : I) → f i)
Equations
- Pi.divisionMonoid = { toDivInvMonoid := Pi.divInvMonoid, inv_inv := ⋯, mul_inv_rev := ⋯, inv_eq_of_mul := ⋯ }
@[instance_reducible]
instance Pi.subtractionMonoid {I : Type u} {f : I → Type v₁} [(i : I) → SubtractionMonoid (f i)] :
SubtractionMonoid ((i : I) → f i)
Equations
- Pi.subtractionMonoid = { toSubNegMonoid := Pi.subNegMonoid, neg_neg := ⋯, neg_add_rev := ⋯, neg_eq_of_add := ⋯ }
@[instance_reducible]
instance Pi.divisionCommMonoid {I : Type u} {f : I → Type v₁} [(i : I) → DivisionCommMonoid (f i)] :
DivisionCommMonoid ((i : I) → f i)
Equations
- Pi.divisionCommMonoid = { toDivisionMonoid := Pi.divisionMonoid, mul_comm := ⋯ }
@[instance_reducible]
instance Pi.instSubtractionCommMonoid {I : Type u} {f : I → Type v₁} [(i : I) → SubtractionCommMonoid (f i)] :
SubtractionCommMonoid ((i : I) → f i)
Equations
- Pi.instSubtractionCommMonoid = { toSubtractionMonoid := Pi.subtractionMonoid, add_comm := ⋯ }
@[instance_reducible]
instance Pi.addGroup {I : Type u} {f : I → Type v₁} [(i : I) → AddGroup (f i)] :
AddGroup ((i : I) → f i)
Equations
- Pi.addGroup = { toSubNegMonoid := Pi.subNegMonoid, neg_add_cancel := ⋯ }
@[instance_reducible]
instance Pi.addCommGroup {I : Type u} {f : I → Type v₁} [(i : I) → AddCommGroup (f i)] :
AddCommGroup ((i : I) → f i)
Equations
- Pi.addCommGroup = { toAddGroup := Pi.addGroup, add_comm := ⋯ }
instance Pi.instIsLeftCancelMul {I : Type u} {f : I → Type v₁} [(i : I) → Mul (f i)] [∀ (i : I), IsLeftCancelMul (f i)] :
IsLeftCancelMul ((i : I) → f i)
instance Pi.instIsLeftCancelAdd {I : Type u} {f : I → Type v₁} [(i : I) → Add (f i)] [∀ (i : I), IsLeftCancelAdd (f i)] :
IsLeftCancelAdd ((i : I) → f i)
instance Pi.instIsRightCancelMul {I : Type u} {f : I → Type v₁} [(i : I) → Mul (f i)] [∀ (i : I), IsRightCancelMul (f i)] :
IsRightCancelMul ((i : I) → f i)
instance Pi.instIsRightCancelAdd {I : Type u} {f : I → Type v₁} [(i : I) → Add (f i)] [∀ (i : I), IsRightCancelAdd (f i)] :
IsRightCancelAdd ((i : I) → f i)
instance Pi.instIsCancelMul {I : Type u} {f : I → Type v₁} [(i : I) → Mul (f i)] [∀ (i : I), IsCancelMul (f i)] :
IsCancelMul ((i : I) → f i)
instance Pi.instIsCancelAdd {I : Type u} {f : I → Type v₁} [(i : I) → Add (f i)] [∀ (i : I), IsCancelAdd (f i)] :
IsCancelAdd ((i : I) → f i)
@[instance_reducible]
instance Pi.leftCancelSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → LeftCancelSemigroup (f i)] :
LeftCancelSemigroup ((i : I) → f i)
Equations
- Pi.leftCancelSemigroup = { toSemigroup := Pi.semigroup, toIsLeftCancelMul := ⋯ }
@[instance_reducible]
instance Pi.addLeftCancelSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → AddLeftCancelSemigroup (f i)] :
AddLeftCancelSemigroup ((i : I) → f i)
Equations
- Pi.addLeftCancelSemigroup = { toAddSemigroup := Pi.addSemigroup, toIsLeftCancelAdd := ⋯ }
@[instance_reducible]
instance Pi.rightCancelSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → RightCancelSemigroup (f i)] :
RightCancelSemigroup ((i : I) → f i)
Equations
- Pi.rightCancelSemigroup = { toSemigroup := Pi.semigroup, toIsRightCancelMul := ⋯ }
@[instance_reducible]
instance Pi.addRightCancelSemigroup {I : Type u} {f : I → Type v₁} [(i : I) → AddRightCancelSemigroup (f i)] :
AddRightCancelSemigroup ((i : I) → f i)
Equations
- Pi.addRightCancelSemigroup = { toAddSemigroup := Pi.addSemigroup, toIsRightCancelAdd := ⋯ }
@[instance_reducible]
instance Pi.leftCancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → LeftCancelMonoid (f i)] :
LeftCancelMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.addLeftCancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → AddLeftCancelMonoid (f i)] :
AddLeftCancelMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.rightCancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → RightCancelMonoid (f i)] :
RightCancelMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.addRightCancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → AddRightCancelMonoid (f i)] :
AddRightCancelMonoid ((i : I) → f i)
Equations
- One or more equations did not get rendered due to their size.
@[instance_reducible]
instance Pi.cancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → CancelMonoid (f i)] :
CancelMonoid ((i : I) → f i)
Equations
- Pi.cancelMonoid = { toLeftCancelMonoid := Pi.leftCancelMonoid, toIsRightCancelMul := ⋯ }
@[instance_reducible]
instance Pi.addCancelMonoid {I : Type u} {f : I → Type v₁} [(i : I) → AddCancelMonoid (f i)] :
AddCancelMonoid ((i : I) → f i)
Equations
- Pi.addCancelMonoid = { toAddLeftCancelMonoid := Pi.addLeftCancelMonoid, toIsRightCancelAdd := ⋯ }
@[instance_reducible]
instance Pi.cancelCommMonoid {I : Type u} {f : I → Type v₁} [(i : I) → CancelCommMonoid (f i)] :
CancelCommMonoid ((i : I) → f i)
Equations
- Pi.cancelCommMonoid = { toMonoid := Pi.leftCancelMonoid.toMonoid, mul_comm := ⋯, toIsLeftCancelMul := ⋯ }
@[instance_reducible]
instance Pi.addCancelCommMonoid {I : Type u} {f : I → Type v₁} [(i : I) → AddCancelCommMonoid (f i)] :
AddCancelCommMonoid ((i : I) → f i)
Equations
- Pi.addCancelCommMonoid = { toAddMonoid := Pi.addLeftCancelMonoid.toAddMonoid, add_comm := ⋯, toIsLeftCancelAdd := ⋯ }
@[simp]
theorem Function.Injective.extend_mulSingle {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [One γ] {f : α → β} (hf : Injective f) (i : α) (a : γ) :
@[simp]
theorem Function.Injective.extend_single {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [Zero γ] {f : α → β} (hf : Injective f) (i : α) (a : γ) :
@[instance_reducible]
def uniqueOfSurjectiveOne (α : Type u_4) {β : Type u_5} [One β] (h : Function.Surjective 1) :
Unique β
If the one function is surjective, the codomain is trivial.
Equations
Instances For
@[instance_reducible]
def uniqueOfSurjectiveZero (α : Type u_4) {β : Type u_5} [Zero β] (h : Function.Surjective 0) :
Unique β
If the zero function is surjective, the codomain is trivial.
Equations
Instances For
theorem Subsingleton.pi_mulSingle_eq {I : Type u} {α : Type u_4} [DecidableEq I] [Subsingleton I] [One α] (i : I) (x : α) :
theorem Subsingleton.pi_single_eq {I : Type u} {α : Type u_4} [DecidableEq I] [Subsingleton I] [Zero α] (i : I) (x : α) :
@[simp]
theorem Sum.elim_mulSingle_one {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [One γ] (i : α) (c : γ) :
@[simp]
theorem Sum.elim_single_zero {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [Zero γ] (i : α) (c : γ) :
@[simp]
theorem Sum.elim_one_mulSingle {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [One γ] (i : β) (c : γ) :
@[simp]
theorem Sum.elim_zero_single {α : Type u_1} {β : Type u_2} {γ : Type u_3} [DecidableEq α] [DecidableEq β] [Zero γ] (i : β) (c : γ) :