Prod instances for additive and multiplicative actions #
This file defines instances for binary product of additive and multiplicative actions and provides
scalar multiplication as a homomorphism from α × β
to β
.
Main declarations #
smulMulHom
/smulMonoidHom
: Scalar multiplication bundled as a multiplicative/monoid homomorphism.
See also #
Mathlib.GroupTheory.GroupAction.Option
Mathlib.GroupTheory.GroupAction.Pi
Mathlib.GroupTheory.GroupAction.Sigma
Mathlib.GroupTheory.GroupAction.Sum
Porting notes #
The to_additive
attribute can be used to generate both the smul
and vadd
lemmas
from the corresponding pow
lemmas, as explained on zulip here:
https://leanprover.zulipchat.com/#narrow/near/316087838
This was not done as part of the port in order to stay as close as possible to the mathlib3 code.
instance
Prod.vaddAssocClass
{M : Type u_1}
{N : Type u_2}
{α : Type u_5}
{β : Type u_6}
[VAdd M α]
[VAdd M β]
[VAdd N α]
[VAdd N β]
[VAdd M N]
[VAddAssocClass M N α]
[VAddAssocClass M N β]
:
VAddAssocClass M N (α × β)
theorem
Prod.vaddAssocClass.proof_1
{M : Type u_1}
{N : Type u_2}
{α : Type u_3}
{β : Type u_4}
[VAdd M α]
[VAdd M β]
[VAdd N α]
[VAdd N β]
[VAdd M N]
[VAddAssocClass M N α]
[VAddAssocClass M N β]
:
VAddAssocClass M N (α × β)
instance
Prod.isScalarTower
{M : Type u_1}
{N : Type u_2}
{α : Type u_5}
{β : Type u_6}
[SMul M α]
[SMul M β]
[SMul N α]
[SMul N β]
[SMul M N]
[IsScalarTower M N α]
[IsScalarTower M N β]
:
IsScalarTower M N (α × β)
instance
Prod.vaddCommClass
{M : Type u_1}
{N : Type u_2}
{α : Type u_5}
{β : Type u_6}
[VAdd M α]
[VAdd M β]
[VAdd N α]
[VAdd N β]
[VAddCommClass M N α]
[VAddCommClass M N β]
:
VAddCommClass M N (α × β)
theorem
Prod.vaddCommClass.proof_1
{M : Type u_1}
{N : Type u_2}
{α : Type u_3}
{β : Type u_4}
[VAdd M α]
[VAdd M β]
[VAdd N α]
[VAdd N β]
[VAddCommClass M N α]
[VAddCommClass M N β]
:
VAddCommClass M N (α × β)
instance
Prod.smulCommClass
{M : Type u_1}
{N : Type u_2}
{α : Type u_5}
{β : Type u_6}
[SMul M α]
[SMul M β]
[SMul N α]
[SMul N β]
[SMulCommClass M N α]
[SMulCommClass M N β]
:
SMulCommClass M N (α × β)
theorem
Prod.isCentralVAdd.proof_1
{M : Type u_1}
{α : Type u_2}
{β : Type u_3}
[VAdd M α]
[VAdd M β]
[VAdd Mᵃᵒᵖ α]
[VAdd Mᵃᵒᵖ β]
[IsCentralVAdd M α]
[IsCentralVAdd M β]
:
IsCentralVAdd M (α × β)
instance
Prod.isCentralVAdd
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[VAdd M α]
[VAdd M β]
[VAdd Mᵃᵒᵖ α]
[VAdd Mᵃᵒᵖ β]
[IsCentralVAdd M α]
[IsCentralVAdd M β]
:
IsCentralVAdd M (α × β)
instance
Prod.isCentralScalar
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[SMul M α]
[SMul M β]
[SMul Mᵐᵒᵖ α]
[SMul Mᵐᵒᵖ β]
[IsCentralScalar M α]
[IsCentralScalar M β]
:
IsCentralScalar M (α × β)
instance
Prod.faithfulVAddLeft
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[VAdd M α]
[VAdd M β]
[FaithfulVAdd M α]
[Nonempty β]
:
FaithfulVAdd M (α × β)
theorem
Prod.faithfulVAddLeft.proof_1
{M : Type u_1}
{α : Type u_2}
{β : Type u_3}
[VAdd M α]
[VAdd M β]
[FaithfulVAdd M α]
[Nonempty β]
:
FaithfulVAdd M (α × β)
Equations
- Prod.faithfulVAddLeft.match_1 motive x h_1 = Nonempty.casesOn x fun val => h_1 val
Instances For
instance
Prod.faithfulSMulLeft
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[SMul M α]
[SMul M β]
[FaithfulSMul M α]
[Nonempty β]
:
FaithfulSMul M (α × β)
theorem
Prod.faithfulVAddRight.proof_1
{M : Type u_1}
{α : Type u_2}
{β : Type u_3}
[VAdd M α]
[VAdd M β]
[Nonempty α]
[FaithfulVAdd M β]
:
FaithfulVAdd M (α × β)
instance
Prod.faithfulVAddRight
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[VAdd M α]
[VAdd M β]
[Nonempty α]
[FaithfulVAdd M β]
:
FaithfulVAdd M (α × β)
instance
Prod.faithfulSMulRight
{M : Type u_1}
{α : Type u_5}
{β : Type u_6}
[SMul M α]
[SMul M β]
[Nonempty α]
[FaithfulSMul M β]
:
FaithfulSMul M (α × β)
theorem
Prod.vaddCommClassBoth.proof_1
{M : Type u_1}
{N : Type u_2}
{P : Type u_3}
[Add N]
[Add P]
[VAdd M N]
[VAdd M P]
[VAddCommClass M N N]
[VAddCommClass M P P]
:
VAddCommClass M (N × P) (N × P)
instance
Prod.vaddCommClassBoth
{M : Type u_1}
{N : Type u_2}
{P : Type u_3}
[Add N]
[Add P]
[VAdd M N]
[VAdd M P]
[VAddCommClass M N N]
[VAddCommClass M P P]
:
VAddCommClass M (N × P) (N × P)
instance
Prod.smulCommClassBoth
{M : Type u_1}
{N : Type u_2}
{P : Type u_3}
[Mul N]
[Mul P]
[SMul M N]
[SMul M P]
[SMulCommClass M N N]
[SMulCommClass M P P]
:
SMulCommClass M (N × P) (N × P)
instance
Prod.isScalarTowerBoth
{M : Type u_1}
{N : Type u_2}
{P : Type u_3}
[Mul N]
[Mul P]
[SMul M N]
[SMul M P]
[IsScalarTower M N N]
[IsScalarTower M P P]
:
IsScalarTower M (N × P) (N × P)
abbrev
Prod.addAction.match_1
{α : Type u_1}
{β : Type u_2}
(motive : α × β → Prop)
:
(x : α × β) → ((fst : α) → (snd : β) → motive (fst, snd)) → motive x
Equations
- Prod.addAction.match_1 motive x h_1 = Prod.casesOn x fun fst snd => h_1 fst snd
Instances For
instance
Prod.smulZeroClass
{R : Type u_7}
{M : Type u_8}
{N : Type u_9}
[Zero M]
[Zero N]
[SMulZeroClass R M]
[SMulZeroClass R N]
:
SMulZeroClass R (M × N)
Equations
- Prod.smulZeroClass = SMulZeroClass.mk (_ : ∀ (x : R), (x • 0.fst, x • 0.snd) = (0, 0))
instance
Prod.distribSMul
{R : Type u_7}
{M : Type u_8}
{N : Type u_9}
[AddZeroClass M]
[AddZeroClass N]
[DistribSMul R M]
[DistribSMul R N]
:
DistribSMul R (M × N)
instance
Prod.distribMulAction
{M : Type u_1}
{N : Type u_2}
{R : Type u_7}
[Monoid R]
[AddMonoid M]
[AddMonoid N]
[DistribMulAction R M]
[DistribMulAction R N]
:
DistribMulAction R (M × N)
instance
Prod.mulDistribMulAction
{M : Type u_1}
{N : Type u_2}
{R : Type u_7}
[Monoid R]
[Monoid M]
[Monoid N]
[MulDistribMulAction R M]
[MulDistribMulAction R N]
:
MulDistribMulAction R (M × N)
Equations
- One or more equations did not get rendered due to their size.
Scalar multiplication as a homomorphism #
@[simp]
theorem
smulMulHom_apply
{α : Type u_5}
{β : Type u_6}
[Monoid α]
[Mul β]
[MulAction α β]
[IsScalarTower α β β]
[SMulCommClass α β β]
(a : α × β)
:
def
smulMulHom
{α : Type u_5}
{β : Type u_6}
[Monoid α]
[Mul β]
[MulAction α β]
[IsScalarTower α β β]
[SMulCommClass α β β]
:
Scalar multiplication as a multiplicative homomorphism.
Equations
Instances For
@[simp]
theorem
smulMonoidHom_apply
{α : Type u_5}
{β : Type u_6}
[Monoid α]
[MulOneClass β]
[MulAction α β]
[IsScalarTower α β β]
[SMulCommClass α β β]
:
∀ (a : α × β), ↑smulMonoidHom a = MulHom.toFun smulMulHom a
def
smulMonoidHom
{α : Type u_5}
{β : Type u_6}
[Monoid α]
[MulOneClass β]
[MulAction α β]
[IsScalarTower α β β]
[SMulCommClass α β β]
:
Scalar multiplication as a monoid homomorphism.
Equations
- One or more equations did not get rendered due to their size.