# Rep k G is the category of k-linear representations of G. #

If V : Rep k G, there is a coercion that allows you to treat V as a type, and this type comes equipped with a Module k V instance. Also V.ρ gives the homomorphism G →* (V →ₗ[k] V).

Conversely, given a homomorphism ρ : G →* (V →ₗ[k] V), you can construct the bundled representation as Rep.of ρ.

We construct the categorical equivalence Rep k G ≌ ModuleCat (MonoidAlgebra k G). We verify that Rep k G is a k-linear abelian symmetric monoidal category with all (co)limits.

@[reducible, inline]
noncomputable abbrev Rep (k : Type u) (G : Type u) [Ring k] [] :
Type (u + 1)

The category of k-linear representations of a monoid G.

Equations
Instances For
noncomputable instance instLinearRep (k : Type u) (G : Type u) [] [] :
Equations
• = inferInstance
noncomputable instance Rep.instCoeSortType {k : Type u} {G : Type u} [] [] :
CoeSort (Rep k G) (Type u)
Equations
• Rep.instCoeSortType =
noncomputable instance Rep.instAddCommGroupCoe {k : Type u} {G : Type u} [] [] (V : Rep k G) :
Equations
• V.instAddCommGroupCoe = let_fun this := inferInstance; this
noncomputable instance Rep.instModuleCoe {k : Type u} {G : Type u} [] [] (V : Rep k G) :
Module k ()
Equations
• V.instModuleCoe = let_fun this := inferInstance; this
noncomputable def Rep.ρ {k : Type u} {G : Type u} [] [] (V : Rep k G) :

Specialize the existing Action.ρ, changing the type to Representation k G V.

Equations
• V = V
Instances For
noncomputable def Rep.of {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (ρ : G →* V →ₗ[k] V) :
Rep k G

Lift an unbundled representation to Rep.

Equations
• = { V := , ρ := ρ }
Instances For
@[simp]
theorem Rep.coe_of {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (ρ : G →* V →ₗ[k] V) :
= V
@[simp]
theorem Rep.of_ρ {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (ρ : G →* V →ₗ[k] V) :
() = ρ
theorem Rep.Action_ρ_eq_ρ {k : Type u} {G : Type u} [] [] {A : Rep k G} :
A = A
theorem Rep.of_ρ_apply {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (ρ : ) (g : ()) :
() g = ρ g

Allows us to apply lemmas about the underlying ρ, which would take an element g : G rather than g : MonCat.of G as an argument.

@[simp]
theorem Rep.ρ_inv_self_apply {k : Type u} [] {G : Type u} [] (A : Rep k G) (g : G) (x : ) :
(A g⁻¹) ((A g) x) = x
@[simp]
theorem Rep.ρ_self_inv_apply {k : Type u} [] {G : Type u} [] {A : Rep k G} (g : G) (x : ) :
(A g) ((A g⁻¹) x) = x
theorem Rep.hom_comm_apply {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} (f : A B) (g : G) (x : ) :
f.hom ((A g) x) = (B g) (f.hom x)
noncomputable def Rep.trivial (k : Type u) (G : Type u) [] [] (V : Type u) [] [Module k V] :
Rep k G

The trivial k-linear G-representation on a k-module V.

Equations
Instances For
theorem Rep.trivial_def {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (g : G) (v : V) :
((Rep.trivial k G V) g) v = v
@[reducible, inline]
noncomputable abbrev Rep.IsTrivial {k : Type u} {G : Type u} [] [] (A : Rep k G) :

A predicate for representations that fix every element.

Equations
• A.IsTrivial = A.IsTrivial
Instances For
noncomputable instance Rep.instIsTrivialTrivial {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] :
(Rep.trivial k G V).IsTrivial
Equations
• =
noncomputable instance Rep.instIsTrivialOfOfIsTrivial {k : Type u} {G : Type u} [] [] {V : Type u} [] [Module k V] (ρ : ) [ρ.IsTrivial] :
().IsTrivial
Equations
• =
noncomputable instance Rep.instPreservesLimitsModuleCatForget₂ {k : Type u} {G : Type u} [] [] :
Equations
• Rep.instPreservesLimitsModuleCatForget₂ =
noncomputable instance Rep.instPreservesColimitsModuleCatForget₂ {k : Type u} {G : Type u} [] [] :
Equations
• Rep.instPreservesColimitsModuleCatForget₂ =
theorem Rep.MonoidalCategory.braiding_hom_apply {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} (x : ) (y : ) :
(β_ A B).hom.hom (x ⊗ₜ[k] y) = y ⊗ₜ[k] x
theorem Rep.MonoidalCategory.braiding_inv_apply {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} (x : ) (y : ) :
(β_ A B).inv.hom (y ⊗ₜ[k] x) = x ⊗ₜ[k] y
noncomputable def Rep.linearization (k : Type u) (G : Type u) [] [] :

The monoidal functor sending a type H with a G-action to the induced k-linear G-representation on k[H].

Equations
• = .mapAction ()
Instances For
@[simp]
theorem Rep.linearization_obj_ρ {k : Type u} {G : Type u} [] [] (X : Action (Type u) ()) (g : G) (x : X.V →₀ k) :
((().obj X) g) x = (Finsupp.lmapDomain k k (X g)) x
theorem Rep.linearization_of {k : Type u} {G : Type u} [] [] (X : Action (Type u) ()) (g : G) (x : X.V) :
((().obj X) g) () = Finsupp.single (X g x) 1
theorem Rep.linearization_single {k : Type u} {G : Type u} [] [] (X : Action (Type u) ()) (g : G) (x : X.V) (r : k) :
((().obj X) g) () = Finsupp.single (X g x) r
@[simp]
theorem Rep.linearization_map_hom {k : Type u} {G : Type u} [] [] {X : Action (Type u) ()} {Y : Action (Type u) ()} (f : X Y) :
(().map f).hom = Finsupp.lmapDomain k k f.hom
theorem Rep.linearization_map_hom_single {k : Type u} {G : Type u} [] [] {X : Action (Type u) ()} {Y : Action (Type u) ()} (f : X Y) (x : X.V) (r : k) :
(().map f).hom () = Finsupp.single (f.hom x) r
@[simp]
theorem Rep.linearization_μ_hom {k : Type u} {G : Type u} [] [] (X : Action (Type u) ()) (Y : Action (Type u) ()) :
(() X Y).hom = (finsuppTensorFinsupp' k X.V Y.V)
@[simp]
theorem Rep.linearization_μ_inv_hom {k : Type u} {G : Type u} [] [] (X : Action (Type u) ()) (Y : Action (Type u) ()) :
(CategoryTheory.inv (() X Y)).hom = (finsuppTensorFinsupp' k X.V Y.V).symm
@[simp]
theorem Rep.linearization_ε_hom {k : Type u} {G : Type u} [] [] :
().hom =
theorem Rep.linearization_ε_inv_hom_apply {k : Type u} {G : Type u} [] [] (r : k) :
().hom = r
noncomputable def Rep.linearizationTrivialIso (k : Type u) (G : Type u) [] [] (X : Type u) :
().obj { V := X, ρ := 1 } Rep.trivial k G (X →₀ k)

The linearization of a type X on which G acts trivially is the trivial G-representation on k[X].

Equations
Instances For
@[simp]
theorem Rep.linearizationTrivialIso_inv_hom_apply (k : Type u) (G : Type u) [] [] (X : Type u) (a : (().obj { V := X, ρ := 1 }).V) :
().inv.hom a = a
@[simp]
theorem Rep.linearizationTrivialIso_hom_hom_apply (k : Type u) (G : Type u) [] [] (X : Type u) (a : (().obj { V := X, ρ := 1 }).V) :
().hom.hom a = a
@[reducible, inline]
noncomputable abbrev Rep.ofMulAction (k : Type u) (G : Type u) [] [] (H : Type u) [] :
Rep k G

Given a G-action on H, this is k[H] bundled with the natural representation G →* End(k[H]) as a term of type Rep k G.

Equations
Instances For
noncomputable def Rep.leftRegular (k : Type u) (G : Type u) [] [] :
Rep k G

The k-linear G-representation on k[G], induced by left multiplication.

Equations
Instances For
noncomputable def Rep.diagonal (k : Type u) (G : Type u) [] [] (n : ) :
Rep k G

The k-linear G-representation on k[Gⁿ], induced by left multiplication.

Equations
Instances For
noncomputable def Rep.linearizationOfMulActionIso (k : Type u) (G : Type u) [] [] (H : Type u) [] :
().obj ()

The linearization of a type H with a G-action is definitionally isomorphic to the k-linear G-representation on k[H] induced by the G-action on H.

Equations
Instances For
noncomputable def Rep.ofDistribMulAction (k : Type u) (G : Type u) (A : Type u) [] [] [] [Module k A] [] [] :
Rep k G

Turns a k-module A with a compatible DistribMulAction of a monoid G into a k-linear G-representation on A.

Equations
Instances For
@[simp]
theorem Rep.ofDistribMulAction_ρ_apply_apply (k : Type u) (G : Type u) (A : Type u) [] [] [] [Module k A] [] [] (g : G) (a : A) :
(() g) a = g a
noncomputable def Rep.ofAlgebraAut (R : Type) (S : Type) [] [] [Algebra R S] :

Given an R-algebra S, the ℤ-linear representation associated to the natural action of S ≃ₐ[R] S on S.

Equations
Instances For
noncomputable def Rep.ofMulDistribMulAction (M : Type) (G : Type) [] [] [] :

Turns a CommGroup G with a MulDistribMulAction of a monoid M into a ℤ-linear M-representation on Additive G.

Equations
Instances For
@[simp]
theorem Rep.ofMulDistribMulAction_ρ_apply_apply (M : Type) (G : Type) [] [] [] (g : M) (a : ) :
noncomputable def Rep.ofAlgebraAutOnUnits (R : Type) (S : Type) [] [] [Algebra R S] :

Given an R-algebra S, the ℤ-linear representation associated to the natural action of S ≃ₐ[R] S on Sˣ.

Equations
Instances For
noncomputable def Rep.leftRegularHom {k : Type u} {G : Type u} [] [] (A : Rep k G) (x : ) :
A

Given an element x : A, there is a natural morphism of representations k[G] ⟶ A sending g ↦ A.ρ(g)(x).

Equations
• A.leftRegularHom x = { hom := (Finsupp.lift (A.V) k G) fun (g : G) => (A g) x, comm := }
Instances For
@[simp]
theorem Rep.leftRegularHom_hom {k : Type u} {G : Type u} [] [] (A : Rep k G) (x : ) :
(A.leftRegularHom x).hom = (Finsupp.lift (A.V) k G) fun (g : G) => (A g) x
theorem Rep.leftRegularHom_apply {k : Type u} {G : Type u} [] [] {A : Rep k G} (x : ) :
(A.leftRegularHom x).hom () = x
noncomputable def Rep.leftRegularHomEquiv {k : Type u} {G : Type u} [] [] (A : Rep k G) :
( A) ≃ₗ[k]

Given a k-linear G-representation A, there is a k-linear isomorphism between representation morphisms Hom(k[G], A) and A.

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem Rep.leftRegularHomEquiv_symm_apply {k : Type u} {G : Type u} [] [] (A : Rep k G) (x : ) :
A.leftRegularHomEquiv.symm x = A.leftRegularHom x
@[simp]
theorem Rep.leftRegularHomEquiv_apply {k : Type u} {G : Type u} [] [] (A : Rep k G) (f : A) :
A.leftRegularHomEquiv f = f.hom ()
theorem Rep.leftRegularHomEquiv_symm_single {k : Type u} {G : Type u} [] [] {A : Rep k G} (x : ) (g : G) :
(A.leftRegularHomEquiv.symm x).hom () = (A g) x
noncomputable def Rep.ihom {k : Type u} {G : Type u} [] [] (A : Rep k G) :

Given a k-linear G-representation (A, ρ₁), this is the 'internal Hom' functor sending (B, ρ₂) to the representation Homₖ(A, B) that maps g : G and f : A →ₗ[k] B to (ρ₂ g) ∘ₗ f ∘ₗ (ρ₁ g⁻¹).

Equations
• One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem Rep.ihom_obj {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) :
A.ihom.obj B = Rep.of (A.linHom B)
@[simp]
theorem Rep.ihom_map_hom {k : Type u} {G : Type u} [] [] (A : Rep k G) {X : Rep k G} {Y : Rep k G} (f : X Y) :
(A.ihom.map f).hom = ModuleCat.ofHom ((LinearMap.llcomp k () () ()) f.hom)
@[simp]
theorem Rep.ihom_obj_ρ_apply {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} (g : G) (x : ) :
((A.ihom.obj B) g) x = B g ∘ₗ x ∘ₗ A g⁻¹
noncomputable def Rep.homEquiv {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) (C : Rep k G) :
(B A.ihom.obj C)

Given a k-linear G-representation A, this is the Hom-set bijection in the adjunction A ⊗ - ⊣ ihom(A, -). It sends f : A ⊗ B ⟶ C to a Rep k G morphism defined by currying the k-linear map underlying f, giving a map A →ₗ[k] B →ₗ[k] C, then flipping the arguments.

Equations
• One or more equations did not get rendered due to their size.
Instances For
theorem Rep.homEquiv_apply_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : ) :
((A.homEquiv B C) f).hom = (TensorProduct.curry f.hom).flip

Porting note: if we generate this with @[simps] the linter complains some types in the LHS simplify.

theorem Rep.homEquiv_symm_apply_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : B A.ihom.obj C) :
((A.homEquiv B C).symm f).hom = () (LinearMap.flip f.hom)

Porting note: if we generate this with @[simps] the linter complains some types in the LHS simplify.

noncomputable instance Rep.instMonoidalClosed {k : Type u} {G : Type u} [] [] :
Equations
• One or more equations did not get rendered due to their size.
@[simp]
theorem Rep.ihom_obj_ρ_def {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) :
(.obj B) = (A.ihom.obj B)
@[simp]
theorem Rep.homEquiv_def {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) (C : Rep k G) :
.homEquiv B C = A.homEquiv B C
@[simp]
theorem Rep.ihom_ev_app_hom {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) :
(.app B).hom = (TensorProduct.uncurry k () () ()) LinearMap.id.flip
@[simp]
theorem Rep.ihom_coev_app_hom {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) :
(.app B).hom = (TensorProduct.mk k () (().obj B).V).flip
noncomputable def Rep.MonoidalClosed.linearHomEquiv {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) (C : Rep k G) :
≃ₗ[k] B .obj C

There is a k-linear isomorphism between the sets of representation morphismsHom(A ⊗ B, C) and Hom(B, Homₖ(A, C)).

Equations
• One or more equations did not get rendered due to their size.
Instances For
noncomputable def Rep.MonoidalClosed.linearHomEquivComm {k : Type u} {G : Type u} [] [] (A : Rep k G) (B : Rep k G) (C : Rep k G) :
≃ₗ[k] A .obj C

There is a k-linear isomorphism between the sets of representation morphismsHom(A ⊗ B, C) and Hom(A, Homₖ(B, C)).

Equations
• = ().trans
Instances For
@[simp]
theorem Rep.MonoidalClosed.linearHomEquiv_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : ) :
( f).hom = (TensorProduct.curry f.hom).flip
@[simp]
theorem Rep.MonoidalClosed.linearHomEquivComm_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : ) :
().hom = TensorProduct.curry f.hom
theorem Rep.MonoidalClosed.linearHomEquiv_symm_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : B .obj C) :
(.symm f).hom = () (LinearMap.flip f.hom)
theorem Rep.MonoidalClosed.linearHomEquivComm_symm_hom {k : Type u} {G : Type u} [] [] {A : Rep k G} {B : Rep k G} {C : Rep k G} (f : A .obj C) :
(.symm f).hom = () f.hom
noncomputable def Representation.repOfTprodIso {k : Type u} {G : Type u} [] [] {V : Type u} {W : Type u} [] [] [Module k V] [Module k W] (ρ : ) (τ : ) :
Rep.of (ρ.tprod τ)

Tautological isomorphism to help Lean in typechecking.

Equations
Instances For
theorem Representation.repOfTprodIso_apply {k : Type u} {G : Type u} [] [] {V : Type u} {W : Type u} [] [] [Module k V] [Module k W] (ρ : ) (τ : ) (x : ) :
(ρ.repOfTprodIso τ).hom.hom x = x
theorem Representation.repOfTprodIso_inv_apply {k : Type u} {G : Type u} [] [] {V : Type u} {W : Type u} [] [] [Module k V] [Module k W] (ρ : ) (τ : ) (x : ) :
(ρ.repOfTprodIso τ).inv.hom x = x

# The categorical equivalence Rep k G ≌ Module.{u} (MonoidAlgebra k G). #

theorem Rep.to_Module_monoidAlgebra_map_aux {k : Type u_1} {G : Type u_2} [] [] (V : Type u_3) (W : Type u_4) [] [] [Module k V] [Module k W] (ρ : G →* V →ₗ[k] V) (σ : G →* W →ₗ[k] W) (f : V →ₗ[k] W) (w : ∀ (g : G), f ∘ₗ ρ g = σ g ∘ₗ f) (r : ) (x : V) :
f ((((MonoidAlgebra.lift k G (V →ₗ[k] V)) ρ) r) x) = (((MonoidAlgebra.lift k G (W →ₗ[k] W)) σ) r) (f x)

Auxiliary lemma for toModuleMonoidAlgebra.

noncomputable def Rep.toModuleMonoidAlgebraMap {k : Type u} {G : Type u} [] [] {V : Rep k G} {W : Rep k G} (f : V W) :
ModuleCat.of () V.asModule ModuleCat.of () W.asModule

Auxiliary definition for toModuleMonoidAlgebra.

Equations
• = let __src := f.hom; { toAddHom := __src.toAddHom, map_smul' := }
Instances For
noncomputable def Rep.toModuleMonoidAlgebra {k : Type u} {G : Type u} [] [] :

Functorially convert a representation of G into a module over MonoidAlgebra k G.

Equations
• One or more equations did not get rendered due to their size.
Instances For
noncomputable def Rep.ofModuleMonoidAlgebra {k : Type u} {G : Type u} [] [] :

Functorially convert a module over MonoidAlgebra k G into a representation of G.

Equations
• One or more equations did not get rendered due to their size.
Instances For
theorem Rep.ofModuleMonoidAlgebra_obj_coe {k : Type u} {G : Type u} [] [] (M : ModuleCat ()) :
CoeSort.coe (Rep.ofModuleMonoidAlgebra.obj M) = RestrictScalars k () M
theorem Rep.ofModuleMonoidAlgebra_obj_ρ {k : Type u} {G : Type u} [] [] (M : ModuleCat ()) :
(Rep.ofModuleMonoidAlgebra.obj M) =
noncomputable def Rep.counitIsoAddEquiv {k : Type u} {G : Type u} [] [] {M : ModuleCat ()} :
((Rep.ofModuleMonoidAlgebra.comp Rep.toModuleMonoidAlgebra).obj M) ≃+ M

Auxiliary definition for equivalenceModuleMonoidAlgebra.

Equations
• Rep.counitIsoAddEquiv = id (.asModuleEquiv.trans ())
Instances For
noncomputable def Rep.unitIsoAddEquiv {k : Type u} {G : Type u} [] [] {V : Rep k G} :
≃+ CoeSort.coe ((Rep.toModuleMonoidAlgebra.comp Rep.ofModuleMonoidAlgebra).obj V)

Auxiliary definition for equivalenceModuleMonoidAlgebra.

Equations
Instances For
noncomputable def Rep.counitIso {k : Type u} {G : Type u} [] [] (M : ModuleCat ()) :
(Rep.ofModuleMonoidAlgebra.comp Rep.toModuleMonoidAlgebra).obj M M

Auxiliary definition for equivalenceModuleMonoidAlgebra.

Equations
• = (let __src := Rep.counitIsoAddEquiv; { toFun := __src.toFun, map_add' := , map_smul' := , invFun := __src.invFun, left_inv := , right_inv := }).toModuleIso'
Instances For
theorem Rep.unit_iso_comm {k : Type u} {G : Type u} [] [] (V : Rep k G) (g : G) (x : ) :
noncomputable def Rep.unitIso {k : Type u} {G : Type u} [] [] (V : Rep k G) :
V (Rep.toModuleMonoidAlgebra.comp Rep.ofModuleMonoidAlgebra).obj V

Auxiliary definition for equivalenceModuleMonoidAlgebra.

Equations
• One or more equations did not get rendered due to their size.
Instances For
noncomputable def Rep.equivalenceModuleMonoidAlgebra {k : Type u} {G : Type u} [] [] :

The categorical equivalence Rep k G ≌ ModuleCat (MonoidAlgebra k G).

Equations
• One or more equations did not get rendered due to their size.
Instances For